2013-05-09 3 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» с и «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()? –

+0

@frikozoid в этом случае, когда не было задано 'ELSE', а значение для истинного условия равно 1,' COUNT() 'и' SUM() 'будут давать тот же результат. –

+0

@Andomar О, хорошо. NULL не учитываются :). +1 –

Смежные вопросы