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