繁体   English   中英

SQL内部连接总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM