簡體   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