[英]SQL inner join sum
我下面有2张桌子。 我想加入它们并查看c2列的总和,但sum(table2.c2)结果显示为18而不是9。如何更正?
表格1:
c1 c2
a 6
a 0
表2
c1 c2
a 9
select table1.c1 ,sum(table1.c2), table2.c1, sum(table2.c2)
from table1
inner join table2
on table1.c1=table2.c1
GROUP BY table1.c1 ,table2.c1
结果如下:
table1.c1 sum(table1.c2) table2.c1 sum(table2.c2)
a 6 a 18
我希望这样:
table1.c1 sum(table1.c2) table2.c1 sum(table2.c2)
a 6 a 9
你想要做的SUM
之前JOIN
select t1.c1, t1.sumc2, t2.c2, t2.sumc2
from (select c1, sum(c2) sumc2 from table1 group by c1) t1
join (select c1, sum(c2) sumc2 from table2 group by c1) t2 on t1.c1 = t2.c1
这是因为您在table1.c1 = table2.c1上进行内部联接,并且table1有两行,导致table2中的单行像这样重复。
c1 t1.c2 t2.c2
a 6 9
a 0 9
因此,总和将为6和18。您可以通过以下方法来解决此问题:例如,在表中添加行号,或者在连接表之前使用内部选择或视图进行求和。
尝试这个
Select t.a, t.b, t1.a, t1.b
from (SElect a, sum(b) as b from tst group by a) t inner join tst1 t1 on (t.a = t1.a)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.