0
我想做到這一點,但它拋出一個SQL錯誤偉大:SQL比內部計數功能
SELECT COUNT(items > 0) as totalItems FROM testTable
Incorrect syntax near '>'.
我的目的是計算是比0更大這裏所有項目。它在MySQL中效果很好,但SQL Server 2008不喜歡它。
謝謝。
我想做到這一點,但它拋出一個SQL錯誤偉大:SQL比內部計數功能
SELECT COUNT(items > 0) as totalItems FROM testTable
Incorrect syntax near '>'.
我的目的是計算是比0更大這裏所有項目。它在MySQL中效果很好,但SQL Server 2008不喜歡它。
謝謝。
在SQL Server中,你需要一個case
聲明:
SELECT SUM(CASE WHEN items > 0 THEN 1 ELSE 0 END) as totalItems
FROM testTable;
您可以使用COUNT()
如果你這樣做:
SELECT COUNT(CASE WHEN items > 0 THEN 1 END) as totalItems
FROM testTable;
但我更喜歡使用SUM()
。
或者,如果items
非負:
SELECT COUNT(NULLIF(items, 0)) as totalItems
FROM testTable;
嗯,查詢本身可能僅僅是
SELECT COUNT(*) as totalItems
FROM testTable
WHERE items > 0
但是,如果它的WHERE
條款沒有按」較大查詢的一部分t適用於那麼你可以使用
SUM(CASE WHEN items > 0 THEN 1 ELSE 0 END)
正如戈登建議。
我從來沒有比現在更喜歡MySQL =)。爲什麼偏好? – Shackrock
@ Shackrock。 。 。將布爾值作爲整數處理是我真正喜歡的MySQL的特性之一。 –
@ Shackrock。 。 。我不喜歡那個「count(2)'='count(1)'。似乎很容易產生誤解。 –