2016-03-21 5 views
-2

TableA имеет следующие данные:Отсчет дисплея 0 значения в SQL Server

Col1 Col2 Col3 
001  A  0 
001  B  0 
002  C  0 
003  D  0 

Я хочу, чтобы увидеть количество записей group byCol1 и Col2 где Col3 = 1 Может быть запрос следующим образом:

Select Col1, Col3, Count(1) 
From TableA 
Group By Col1, Col2 
Where Col3 = 1 

Поскольку нет записей с Col3 = 1, никакие записи не будут отображаться, но я все еще хочу отображать значения со счетом как 0. Например, o utput выглядит следующим образом:

Col1 Col2 CountOfRecords 
001  A  0 
001  B  0 
002  C  0 
003  D  0 

Не могли бы вы помочь мне получить выход, как показано выше.

ответ

3

Один подход заключается в использовании условной агрегации:

Select Col1, Col2, Count(case when Col3 = 1 then 1 end) as CountOfRecords 
From TableA 
Group By Col1, Col2 
+0

Спасибо ... Это работает ... –

+2

@VenkateswarluAvula, Не стесняйтесь принять этот ответ, если вы считаете, что это было полезно для вас. :-) –

+0

Принято ... :) Спасибо ... –

0

во-первых, вы пишете неправильно заявление SQL, вы не можете использовать Где пункт после группы по п .. вам нужно использовать, прежде группе .. если вы хотите использовать фильтр после группы, используя Имея пункт .. секунд, если нет соответствующего столбца для 'Col3 = 1', то вы не получили никакого результата .. для этого вам нужно использовать case утверждение или подзапросы. в противном случае не использовать предложение group by, а не использовать простой оператор sql.

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