我想要做的是将一个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'的值?如果你不想要这种行为,请使用常数。 –