2011-09-21 162 views
2

我想要做的是將一個COUNT添加到多個表上的查詢中,但我只想在事件滿足特定條件時進行計數。有沒有辦法將條件添加到COUNT()中?

我想伯爵只計算有像這樣一個ReceivedDate行:

COUNT(ReceivedDate = "0000-00-00 00:00:00", plpq.PurchaseOrderID) AS OrdersForPart 

有什麼辦法來實現這一目標,而不必訴諸於一個子查詢?

回答

2

假設你可能要執行的其他行的一些聚集,因此不能只排除它們完全是WHERE子句。

COUNT(CASE 
     WHEN ReceivedDate = "0000-00-00 00:00:00" 
     THEN plpq.PurchaseOrderID 
     END) AS OrdersForPart 

如果這不是WHERE條款當然是最好的選擇的情況下。

+0

與標準選擇相比,這沒有提供準確的計數。 –

+0

@Ben - 你是否記得'COUNT(plpq.PurchaseOrderID)'只計算其中'plpq.PurchaseOrderID不爲NULL'的值?如果你不想要這種行爲,請使用常數。 –

1
SELECT COUNT(plpq.PurchaseOrderID) 
    AS OrdersForPart 
    FROM table 
    WHERE ReceivedDate = "0000-00-00 00:00:00" 
2

只是在哪裏使用。

SELECT COUNT(plpq.PurchaseOrderID) AS OrdersForPart FROM ... WHERE ReceivedDate = '000-00-00 00:00:00' 

應該只是罰款;)

相關問題