我有3张桌子。它们具有相同的列。我需要将它们合并到一个表中,这样我只有唯一的行,需要在3个表中计算金额列。
e.g。
表1
Name1,2,100.00
姓名5,3,25.00
表2
姓名1,2,50.00
表3
Name1,2,60.00
期望的结果:
Name1,2,90.00,即计算为(100-60 + 50)
姓名5,3,25.00
有什么想法吗?我已经尝试过联盟,但这不会为我计算或显示独特的行....
答案 0 :(得分:3)
在这个解决方案中,我只是取了第二列的Min值,因为你没有指定如何在三个表中组合它。
Select Z.Name, Min( SomeInt ) As MinSomeInt
, Sum( SomeDecimal ) As TotalSomeDecimal
From (
Select Name, SomeInt, SomeDecimal
From Table1
Union All
Select Name, SomeInt, SomeDecimal
From Table2
Union All
Select Name, SomeInt, SomeDecimal * -1
From Table3
) As Z
Group By Z.Name
答案 1 :(得分:1)
非常明确的问题。使用UNION ALL将表组合成一个可查询的东西,然后使用GROUP BY组合共享值的行。
SELECT Col1, SUM(Col2) as Col2
FROM
(
SELECT Col1, Col2
FROM Table1
UNION ALL
SELECT Col1, Col2
FROM Table2
UNION ALL
SELECT Col1, Col2
FROM Table3
) as sub
GROUP BY Col1