2016-02-13 32 views
0

我想做到這一點,但它拋出一個SQL錯誤偉大:SQL比內部計數功能

SELECT COUNT(items > 0) as totalItems FROM testTable 

Incorrect syntax near '>'. 

我的目的是計算是比0更大這裏所有項目。它在MySQL中效果很好,但SQL Server 2008不喜歡它。

謝謝。

回答

2

在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; 
+0

我從來沒有比現在更喜歡MySQL =)。爲什麼偏好? – Shackrock

+0

@ Shackrock。 。 。將布爾值作爲整數處理是我真正喜歡的MySQL的特性之一。 –

+0

@ Shackrock。 。 。我不喜歡那個「count(2)'='count(1)'。似乎很容易產生誤解。 –

0

嗯,查詢本身可能僅僅是

SELECT COUNT(*) as totalItems 
FROM testTable 
WHERE items > 0 

但是,如果它的WHERE條款沒有按」較大查詢的一部分t適用於那麼你可以使用

SUM(CASE WHEN items > 0 THEN 1 ELSE 0 END) 

正如戈登建議。