2013-05-09 68 views
2

我試圖計算一列中的所有「Y」和「N」,但將它們按另一列分組。我可以把它拉只是「Y」或「N」與WHERE:對同一列進行多次計數,已分組

SELECT TABLE2.GROUP_BY_THIS,COUNT(TABLE1.FLAG) 
FROM TABLE1 INNER JOIN 
TABLE2 On TABLE1.Primary_Key = TABLE2.Foreign_Key 
WHERE TABLE1.FLAG_Required = "Y" 
GROUP BY TABLE2.GROUP_BY_THIS 

,我可以看到的「Y」 S和「N」 S爲整個數據集,而不是由分組SQL - Counting a column twice但我不太知道如何讓我的期望的結果應該看起來有點像這樣:

GROUP_BY_THIS Y COUNT N COUNT 
------------------------------- 
GROUP1   10  1 
GROUP2   10  100 
GROUP3   0  10 
GROUP4   50  500 
GROUP5   1000  0 

我需要進一步分組以某種方式使用第一個答案這裏的另一列?

回答

4
SELECT TABLE2.GROUP_BY_THIS 
,  COUNT(CASE WHEN TABLE1.FLAG = 'Y' THEN 1 END) 
,  COUNT(CASE WHEN TABLE1.FLAG = 'N' THEN 1 END) 
FROM TABLE1 
JOIN TABLE2 
ON  TABLE1.Primary_Key = TABLE2.Foreign_Key 
GROUP BY 
     TABLE2.GROUP_BY_THIS 
+0

不應該是SUM()而不是COUNT()? – 2013-05-09 11:49:23

+0

@frikozoid在這種情況下,如果沒有指定ELSE,並且true條件的值爲1,則COUNT()和SUM()會產生相同的結果。 – 2013-05-09 11:54:51

+0

@Andomar哦,好的。 NULL不計數:)。 +1 – 2013-05-09 11:56:46

相關問題