我正在试图弄清楚如何返回一个选择查询,显示列中所有值的计数大于0.然后在下一列中显示所有值的计数= 0。
示例:
ID ColumnA
1 1
2 2
3 1
4 2
5 0
6 0
7 1
将返回选择查询的结果:
NumberOfGreaterThan0 NumberThatEqual0
5 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