3 回答

TA貢獻(xiàn)1836條經(jīng)驗 獲得超13個贊
您可以將SUM(而不是COUNT?。┡cCASE語句結(jié)合使用,如下所示:
SELECT SUM(CASE WHEN myColumn=1 THEN 1 ELSE 0 END)
FROM AD_CurrentView
注意:在我自己的測試NULL中,這不是問題,盡管這可能取決于環(huán)境。您可以處理空值,例如:
SELECT SUM(CASE WHEN ISNULL(myColumn,0)=1 THEN 1 ELSE 0 END)
FROM AD_CurrentView

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊
我通常會按照J(rèn)osh的建議去做,但是集思廣益并測試了我覺得很喜歡分享的略微曲折的選擇。
您可以利用COUNT(ColumnName)不計算NULL的事實,并使用如下所示的內(nèi)容:
SELECT COUNT(NULLIF(0, myColumn))
FROM AD_CurrentView
NULLIF-如果兩個傳入的值相同,則返回NULL。
優(yōu)點:將您的意圖表達(dá)為COUNT行,而不是SUM()表示法。缺點:不清楚其工作方式(“魔術(shù)”通常很糟糕)。

TA貢獻(xiàn)1831條經(jīng)驗 獲得超4個贊
SELECT COUNT(CASE WHEN myColumn=1 THEN AD_CurrentView.PrimaryKeyColumn ELSE NULL END)
FROM AD_CurrentView
對于我來說效果很好(在SQL Server 2012中),而無需將“計數(shù)”更改為“總和”,并且相同的邏輯可移植到其他“條件聚合”中。例如,根據(jù)條件求和:
SELECT SUM(CASE WHEN myColumn=1 THEN AD_CurrentView.NumberColumn ELSE 0 END)
FROM AD_CurrentView
- 3 回答
- 0 關(guān)注
- 1335 瀏覽
添加回答
舉報