如何在案例陈述中使用计数

问题描述

我正在使用下面的代码获取在case语句中具有和的每个case语句的计数,但是我收到了错误消息。

SELECT
  count(case when SUM(Orders.Sales)>10000 then 1 end) as High,count(case when SUM(Orders.Sales)>5000 and SUM(Orders.Sales)<9999 then 
  SUM(Orders.Sales) end) as Medium,count(case when SUM(Orders.Sales)<5000 then SUM(Orders.Sales) end) as Low
FROM Orders
INNER JOIN Returns ON Orders.[Order ID] = Returns.[Order ID]

输出

enter image description here

这是我期望得到的必需输出

enter image description here

解决方法

我觉得您应该对按顺序汇总的子查询进行外部计数汇总:

SELECT
    COUNT(CASE WHEN sales < 5000  THEN 1 END) AS Low,COUNT(CASE WHEN sales < 9999  THEN 1 END) AS Medium,COUNT(CASE WHEN sales >= 9999 THEN 1 END) AS High
FROM
(
    SELECT o.[Order ID],SUM(o.Sales) AS sales
    FROM Orders o
    INNER JOIN Returns r ON o.[Order ID] = r.[Order ID]
    GROUP BY o.[Order ID]
) t;

话虽这么说,但我实际上不知道将Orders联接到Returns表的目的是什么。如果您打算仅从已退回的订单中查找销售额,那么这可能是有道理的。否则,可能没有任何意义。