【发布时间】:2011-11-22 03:14:01
【问题描述】:
我想要做的是将 COUNT 添加到连接到多个表的查询中,但我只想在满足特定条件时对它进行计数。
我希望计数只计算具有 ReceivedDate 的行,如下所示:
COUNT(ReceivedDate = "0000-00-00 00:00:00", plpq.PurchaseOrderID) AS OrdersForPart
有没有什么方法可以在不使用子查询的情况下实现这一点?
【问题讨论】:
我想要做的是将 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 子句当然是最好的选择。
【讨论】:
COUNT(plpq.PurchaseOrderID) 只会计算plpq.PurchaseOrderID IS NOT NULL 的值吗?如果您不想要这种行为,请使用常量。
只需使用 where。
SELECT COUNT(plpq.PurchaseOrderID) AS OrdersForPart FROM ... WHERE ReceivedDate = '000-00-00 00:00:00'
应该可以正常工作;)
【讨论】:
SELECT COUNT(plpq.PurchaseOrderID)
AS OrdersForPart
FROM table
WHERE ReceivedDate = "0000-00-00 00:00:00"
【讨论】: