我有3张桌子。我想将第二个表和第三个表中的相应值添加到下图中的第一个表中。每张表都有一个可以匹配的ID,图片中的...
字段。第一个表有1531行,ID列和其他8列。这张桌子是图片中的顶级表格,几乎全是零。
我试图以不同的方式加入表,但问题是每个表都有不同的行数,因此不同的数字唯一ID。顶部表格包含所有ID。
是否有一些方便的方法将第二个表添加到第一个表,然后将第三个表添加到该结果中?
按建议Suzena建议的左连接结果:为什么这些数字不能一起汇总?
答案 0 :(得分:2)
方法1:加入
body,div {
font-family: 'Bungee Inline', cursive;
}
方法2:工会
select a.id,(a.col1 + b.col1+c.col1) as col1, (a.col2 + b.col2 + c.col2) as col2, (a.col3 + b.col3 + c.col3) as col3
from
table1 a
left join
table2 b
on a.id = b.id
left join
table3 c
on a.id = c.id;
如果您有任何不同的标准,请告诉我。
方法3:拥有不同数量的字段,因此请使用select id,sum(col1) col1, sum(col2) col2, sum(col3) col3
from
(
select id,col1,col2,col3
from table1
union all
select id,col1,col2,col3
from table2
union all
select id,col1,col2,col3
from table3
) t
group by id
或NULL
0
答案 1 :(得分:0)
如果我理解你的问题,你可以使用工会。类似的东西:
insert into table1(col1,col2,col3,col4)
(select col1,col2,col3,col4 from table2 union
select col1,col2,col3,col4 from table3)
table2和table3的列名必须匹配。使用别名。
答案 2 :(得分:0)
尝试使用MERGE
--Get data from table 2 and merge into table 1
MERGE Table_1 AS TARGET
USING (SELECT [ID]
,[KEVAT 201501-04]
,[KESA 201504-06]
,[SYKSY 201507-09]
,[TALVI 201510-12] FROM Table_2) AS SOURCE
ON (TARGET.ID = SOURCE.ID)
WHEN MATCHED
THEN UPDATE SET
TARGET.[KEVAT 201501-04] = SOURCE.[KEVAT 201501-04],
TARGET.[KESA 201504-06] = SOURCE.[KESA 201504-06],
TARGET.[SYKSY 201507-09] = SOURCE.[SYKSY 201507-09],
TARGET.[TALVI 201510-12] = SOURCE.[TALVI 201510-12];
GO
--Get data from table 3 and merge into table 1
MERGE Table_1 AS TARGET
USING (SELECT [ID]
,[KEVAT 201601-01]
,[KESA 201604-06]
,[SYKSY 201607-09]
,[TALVI 201610-12] FROM Table_3) AS SOURCE
ON (TARGET.ID = SOURCE.ID)
WHEN MATCHED
THEN UPDATE SET
TARGET.[KEVAT 201601-01] = SOURCE.[KEVAT 201601-01],
TARGET.[KESA 201604-06] = SOURCE.[KESA 201604-06],
TARGET.[SYKSY 201607-09] = SOURCE.[SYKSY 201607-09],
TARGET.[TALVI 201610-12] = SOURCE.[TALVI 201610-12];
GO