在SQL Server中显示计数0值
表A的数据如下:在SQL Server中显示计数0值,sql,sql-server,sql-server-2008,tsql,sql-server-2012,Sql,Sql Server,Sql Server 2008,Tsql,Sql Server 2012,表A的数据如下: Col1 Col2 Col3 001 A 0 001 B 0 002 C 0 003 D 0 Select Col1, Col3, Count(1) From TableA Group By Col1, Col2 Where Col3 = 1 Col1 Col2 CountOfRecords 001 A 0 001 B 0 002
Col1 Col2 Col3
001 A 0
001 B 0
002 C 0
003 D 0
Select Col1, Col3, Count(1)
From TableA
Group By Col1, Col2
Where Col3 = 1
Col1 Col2 CountOfRecords
001 A 0
001 B 0
002 C 0
003 D 0
我想查看按Col1
和Col2
分组的记录计数,其中Col3=1
可能的查询如下:
Col1 Col2 Col3
001 A 0
001 B 0
002 C 0
003 D 0
Select Col1, Col3, Count(1)
From TableA
Group By Col1, Col2
Where Col3 = 1
Col1 Col2 CountOfRecords
001 A 0
001 B 0
002 C 0
003 D 0
由于没有Col3=1的记录,因此不会显示任何记录,但我仍然希望显示计数为0的值。
例如,输出如下所示:
Col1 Col2 Col3
001 A 0
001 B 0
002 C 0
003 D 0
Select Col1, Col3, Count(1)
From TableA
Group By Col1, Col2
Where Col3 = 1
Col1 Col2 CountOfRecords
001 A 0
001 B 0
002 C 0
003 D 0
您能否帮助我获得如上所示的输出。一种方法是使用条件聚合:
Select Col1, Col2, Count(case when Col3 = 1 then 1 end) as CountOfRecords
From TableA
Group By Col1, Col2
首先,您编写了错误的sql语句,不能在Group by子句之后使用Where子句。。您需要在分组之前使用。。如果要在分组后使用筛选器,请使用Having子句。。
第二,如果“Col3=1”没有匹配列,则没有得到任何结果。。为此,您需要使用case语句或子查询。
否则,不要使用GROUPBY子句,而不要使用简单的sql语句 @venkateswaruavula,如果你觉得这个答案对你有用,请接受它。:-)