2015-10-17 300 views
4

我想弄清楚如何返回顯示大於0的列中所有值的計數的選擇查詢。然後在下一列中顯示所有計數即= 0的值選擇數量大於0的數值SQL Server

實施例:

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

將返回的結果爲選擇查詢:

NumberOfGreaterThan0 NumberThatEqual0 

5      2 

回答

10

可以經由使用條件聚集體對本表達式:

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

這適用,因爲聚合函數忽略NULL值。

+0

這是夢幻般的,正是我一直在尋找。非常感激 :) – Revokez

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