2013-05-09 69 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

相关问题