选择Count其中值大于0 SQL Server

时间:2015-10-17 14:35:07

标签: sql sql-server select count

我正在试图弄清楚如何返回一个选择查询,显示列中所有值的计数大于0.然后在下一列中显示所有值的计数= 0。

示例:

ID  ColumnA
1   1    
2   2
3   1
4   2
5   0
6   0
7   1

将返回选择查询的结果:

NumberOfGreaterThan0    NumberThatEqual0

5                       2

2 个答案:

答案 0 :(得分:14)

您可以通过CASE表达式使用条件聚合:

SELECT COUNT(CASE WHEN ColumnA > 0 THEN 1 END) AS NumberOfGreaterThan0 
      ,COUNT(CASE WHEN ColumnA = 0 THEN 1 END) AS NumberThatEqual0
FROM YourTable

这是有效的,因为聚合函数会忽略NULL个值。

答案 1 :(得分:2)

您可以在count个表达式上使用几个case函数:

SELECT COUNT(CASE WHEN columa > 0 THEN 1 ELSE NULL END) AS NumberOfGreaterThan0,
       COUNT(CASE columa WHEN 0 THEN 1 ELSE NULL END) AS NumberThatEqual0
FROM   my_table