我有一个问题有点像:
where 我有一个很大的 where 部分进行一些过滤,然后当我在做不同的类别时想要在 select 部分中进行过滤。
我的情况有所不同,因为我需要使用不同的使用案例而不是总和:您有多个订单并且想要计算特定产品的订单数量(除了根据其他条件返回一堆其他聚合)。但是,由于技术问题,有时订单系统会创建两个几乎相同的行,它们具有相同的 ProductID 和相同的 OrderID(其他列会略有不同,例如下单时间)。但是,您只想计算特定产品的不同订单的数量(例如,每个唯一的 OrderID 仅 +1)。但是,对于其他一些聚合,您需要使用重复条目,因此您必须在 select 部分中使用 case 子查询来进行计数。
我创建了一个几乎适用于这个示例数据库的查询:
SELECT COUNT(ProductID)
, COUNT(CASE WHEN ProductID = 51 THEN DISTINCT OrderDetailID END)
FROM OrderDetails
但是它抱怨语法错误。一旦我删除“DISTINCT”,它就可以正常工作,但这会导致重复计数(虽然它们不存在于示例数据库中,但存在于我的数据库中)这就是我需要“DISTINCT”工作的原因