我想要做的是將一個COUNT添加到多個表上的查詢中,但我只想在事件滿足特定條件時進行計數。有沒有辦法將條件添加到COUNT()中?
我想伯爵只計算有像這樣一個ReceivedDate行:
COUNT(ReceivedDate = "0000-00-00 00:00:00", plpq.PurchaseOrderID) AS OrdersForPart
有什麼辦法來實現這一目標,而不必訴諸於一個子查詢?
我想要做的是將一個COUNT添加到多個表上的查詢中,但我只想在事件滿足特定條件時進行計數。有沒有辦法將條件添加到COUNT()中?
我想伯爵只計算有像這樣一個ReceivedDate行:
COUNT(ReceivedDate = "0000-00-00 00:00:00", plpq.PurchaseOrderID) AS OrdersForPart
有什麼辦法來實現這一目標,而不必訴諸於一個子查詢?
假設你可能要執行的其他行的一些聚集,因此不能只排除它們完全是WHERE
子句。
COUNT(CASE
WHEN ReceivedDate = "0000-00-00 00:00:00"
THEN plpq.PurchaseOrderID
END) AS OrdersForPart
如果這不是WHERE
條款當然是最好的選擇的情況下。
SELECT COUNT(plpq.PurchaseOrderID)
AS OrdersForPart
FROM table
WHERE ReceivedDate = "0000-00-00 00:00:00"
只是在哪裏使用。
SELECT COUNT(plpq.PurchaseOrderID) AS OrdersForPart FROM ... WHERE ReceivedDate = '000-00-00 00:00:00'
應該只是罰款;)
與標準選擇相比,這沒有提供準確的計數。 –
@Ben - 你是否記得'COUNT(plpq.PurchaseOrderID)'只計算其中'plpq.PurchaseOrderID不爲NULL'的值?如果你不想要這種行爲,請使用常數。 –