2014-10-29 214 views
0

我有兩個SQL選擇。SQL連接兩個計數選擇

第一:

SELECT v.red_club, count(v.red_club) 
FROM v_round as v 
GROUP BY v.red_club 

和它返回:

red_club count(v.red_club) 
ABC  22 
DEF  12 
XYZ  4 

第二選擇:

SELECT v.green_club, count(v.green_club) 
FROM v_round as v 
GROUP BY v.green_club 

和它返回:

green_club count(v.green_club) 
ABC  5 
DEF  9 
XYZ  33 

我如何加入計數一起(在一個選擇),這樣的結果是這樣的:

club count(total) 
ABC  27 
DEF  21 
XYZ  37 
+0

如果green_club填充,這是否意味着red_club爲空? – paqogomez 2014-10-29 20:36:11

回答

3

你試過UNION-ING每個查詢的結果?

SELECT lbl, SUM(cnt) 
FROM(
    SELECT v.red_club lbl, count(v.red_club) cnt 
    FROM v_round as v 
    GROUP BY v.red_club 
    UNION ALL 
    SELECT v.green_club lbl, count(v.green_club) cnt 
    FROM v_round as v 
    GROUP BY v.green_club 
) 
Group by lbl 
+0

這取決於組的名稱。如果綠色和紅色俱樂部有相同的名字:3行。如果它們全都不同:6.這就是爲什麼我們按lbl分組。 使用UNION'ALL'是因爲SQL將刪除重複行:如果Green俱樂部的名稱爲A並且計數爲10並且紅色俱樂部的名稱爲A計數爲10,則SQL將只返回1條記錄,這意味着你的款項將關閉。 – 2014-10-29 20:48:36

0

像這樣的事情

select red.red_club as club, rcount+gcount as cout 
from 
(
SELECT v.red_club, count(v.red_club) as rcount 
FROM v_round as v 
GROUP BY v.red_club 
) as red 
inner join 
(
SELECT v.green_club, count(v.green_club) as gcount 
FROM v_round as v 
GROUP BY v.green_club 
) as green on red.red_club = green.green_club 
+0

雖然我的工作,@布萊恩是更好的解決方案。 – Matt 2014-10-29 20:38:12