2016-05-06 3 views
1

У меня есть таблица, как этотКак вернуть одну единственную строку из сгруппированных по колонкам

ID Specified TIN 
----------------- 
1  0 tin1 
2  0 tin1 
3  1 tin1  
4  0 tin2 
5  0 tin3 
6  1 tin3 
7  1 tin3 

Мне нужно подсчитать строки сгруппированных по РННАМ, указаны столбцы - но результат должны один ряд для каждого РНН:

TIN ZEROSpecified NOTZEROSpecified 
tin1  2     1 
tin2  0     1 
tin3  1     2 

Важное замечание - у меня есть только два значения для указанного столбца - 0 и 1

ответ

6
SELECT TIN, 
SUM(case when Specified=0 then 1 else 0 end) as ZeroSpecified, 
SUM(case when Specified<>0 then 1 else 0 end) as NOTZEROSpecified 
FROM table 
GROUP BY TIN 
+0

Спасибо, мой друг! я забыл о функции суммы) –

+0

Вам нужно отредактировать второй случай, это неверно; 'Указано <> 1' –

+0

Да, я уже исправил – Madhivanan

1

Довольно простой;

SELECT 
TIN 
,SUM(CASE WHEN Specified = 0 THEN 1 ELSE 0 END) ZEROSpecified 
,SUM(CASE WHEN Specified <> 0 THEN 1 ELSE 0 END) NotZEROSpecified 
FROM TableName 
GROUP BY TIN