2011-03-25 90 views
9

可能重複:
SQL Equivalent of COUNTIF()過濾內部COUNT在SQL Server

我可以將某種內部COUNT本身,我不過濾機制,想在什麼地方使用或JOIN的該查詢(因爲它是大型查詢的一部分,其中也有其他列,我不想受到影響的地方和加入條件)。

例如,我可以使用機箱內部SUM

SUM(CASE WHEN work_status IN ('V','L') THEN shift_total_hours ELSE 0 END), 

我可以做這樣的事情在算過,所以我會得到計數特定行僅

是這樣的:

COUNT(CASE WHEN work_status IN ('V','L') THEN <should come in count> ELSE <exclude from count> END) 

千恩萬謝。

回答

12

你可以使用

COUNT(CASE WHEN work_status IN ('V','L') THEN 1 END) 

對於不符合規定條件的CASE表達式返回NULLCOUNT只能算作NOT NULL

+2

+1行。換句話說,如果ELSE分支被省略,則隱含「ELSE NULL」。 – 2011-03-25 16:11:19

5

這應該做你想要什麼:

SUM(CASE WHEN work_status IN ('V','L') THEN 1 ELSE 0 END) 

雖然它使用的是SUM聚合函數,它實際上是一個有條件的計數,因爲每一行,您要添加1或0的總和。