具有case语句的group by group by子句失败

时间:2018-03-07 21:22:46

标签: sql sql-server

我有一张桌子:

PROCEDURE
---------
id  INT
SERVICE_TYPE  VARCHAR(20)
TIMEUNITS (INT)
UNITS (INT)

我正在尝试运行此sql代码:

select SERVICE_TYPE, 
       case when TIMEUNITS > 1 THEN SUM(1) 
       WHEN UNITS > 1 THEN SUM(UNITS) 
       END
group by SERVICE_TYPE

我的问题是我被告知TIMEUNITS没有分组也没有汇总......

如何修复此查询? 感谢

1 个答案:

答案 0 :(得分:2)

对于条件聚合,case表达式是聚合函数的参数。例如,要获取timeunits > 1

的行数
select SERVICE_TYPE,
       sum(case when timeunits > 1 then 1 else 0 end)
from t
group by SERVICE_TYPE;