英文:
Merge two tables together using insert statement to match exact values into table 1
问题
以下是翻译好的内容:
我有两个表格,我正在尝试使用插入操作将它们合并到第一个表格中。
第一个表格字段:
日期 | cat_1 | cat_2 | cat_3 |
---|---|---|---|
2020-01-02 | 1 | 2 | 0 |
2020-01-03 | 2 | 0 | 3 |
第二个表格字段:
日期 | cat_type | cat_count |
---|---|---|
2020-01-04 | 2 | 1 |
2020-01-04 | 3 | 2 |
我想要将第二个表格的字段合并到第一个表格中。我应该如何最好地做到这一点?我正在尝试以下操作:
INSERT INTO table 1 (FILE_DATE, cat_1, cat_2,cat_3)
SELECT DATE,
CASE WHEN cat_type = 2 THEN cat_count ELSE 0 END AS cat_1,
CASE WHEN cat_type = 2 THEN 0 ELSE cat_count END AS cat_2,
CASE WHEN cat_type = 3 THEN cat_count ELSE 0 END AS cat_3
FROM TABLE_2;
英文:
I have two tables and I am trying to see how best to merge them into the first table using insert.
Table 1 Fields:
date | cat_1 | cat_2 | cat_2 |
---|---|---|---|
2020-01-02 | 1 | 2 | 0 |
2020-01-03 | 2 | 0 | 3 |
Table 2 fields:
date | cat_type | cat_count |
---|---|---|
2020-01-04 | 2 | 1 |
2020-01-04 | 3 | 2 |
I want to get the table 2 fields into table 1. How can I best do this? I am trying the following
INSERT INTO table 1 (FILE_DATE, cat_1, cat_2,cat_3)
FROM
(SELECT DATE,
CASE WHEN cat_type = 2 THEN 'INSERT CAT_COUNT INTO CAT_2)
END
FROM TABLE_2)
答案1
得分: 0
以下是翻译好的部分:
基本上,您需要透视 Table2,然后插入。
类似这样... FIDDLE
INSERT INTO Table1 (File_date, cat_1, cat_2, cat_3)
SELECT File_date
, SUM(CASE WHEN cat_type = 1 THEN cat_count ELSE NULL END) AS cat_1
, SUM(CASE WHEN cat_type = 2 THEN cat_count ELSE NULL END) AS cat_2
, SUM(CASE WHEN cat_type = 3 THEN cat_count ELSE NULL END) AS cat_3
FROM Table2
GROUP BY File_date
SELECT * FROM TABLE1
英文:
Basically you need to pivot table2 and then insert.
Something like this... FIDDLE
INSERT INTO Table1 (File_date, cat_1, cat_2, cat_3)
SELECT File_date
, SUM(CASE WHEN cat_type = 1 THEN cat_count ELSE NULL END) AS cat_1
, SUM(CASE WHEN cat_type = 2 THEN cat_count ELSE NULL END) AS cat_2
, SUM(CASE WHEN cat_type = 3 THEN cat_count ELSE NULL END) AS cat_3
FROM Table2
GROUP BY File_date
SELECT * FROM TABLE1
答案2
得分: 0
您可以使用Pivot来解决问题。
您可以轻松地在Pivot中更改cat_?列表
插入到T1
(tdate,cat_1,cat_2,cat_3)
选择
tdate
,[1]作为cat_1
,[2]作为cat_2
,[3]作为cat_3
从
(
选择
tdate,
cat_type,
cat_count
从
T2
) t
Pivot(
sum(cat_count)
为 cat_type 在 (
[1],
[2],
[3] )
) 作为pivot_table;
您可以使用以下语句创建插入基础数据:
如果存在则删除表T1
创建表T1(tdate DATE,cat_1 INT,cat_2 INT,cat_3 INT)
如果存在则删除表T2
创建表T2(tdate DATE,cat_type INT,cat_count INT)
将值插入到T2中('2020-01-04',2,1)
将值插入到T2中('2020-01-04',3,2);
将值插入到T2中('2020-01-05',3,2);
英文:
You can use Pivot to solve the problem
you can easy change List cat_? in pivot
insert into T1
(tdate,cat_1,cat_2,cat_3)
SELECT
tdate
,[1] as cat_1
,[2] as cat_2
,[3] as cat_3
FROM
(
SELECT
tdate,
cat_type,
cat_count
FROM
T2
) t
PIVOT(
sum(cat_count)
FOR cat_type IN (
[1],
[2],
[3] )
) AS pivot_table;
You can create insert base data with the following statements:
drop table if exists T1
CREATE TABLE T1 ( tdate DATE, cat_1 INT, cat_2 INT, cat_3 INT)
drop table if exists T2
CREATE TABLE T2 (tdate DATE, cat_type INT, cat_count INT)
INSERT INTO T2 VALUES ('2020-01-04', 2, 1)
INSERT INTO T2 VALUES ('2020-01-04', 3, 2);
INSERT INTO T2 VALUES ('2020-01-05', 3, 2);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论