我正在尝试使用Rollup,并想知道是否有办法在不使用子查询,CTE或临时表的情况下实现此目的。这是我的代码:
select coalesce(Answer,case Grouping_ID(Answer) when 1 then 'Total' end) as Answer
, Count(*) as CSAT_Count
, Case Answer
when 'Average' then 2*count(*)
when 'Outstanding' then 3*Count(*)
when 'Unsatisfactory' then 1*Count(*)
end as CSAT_Score
from CSAT_Table
Where Empl_ID = 98
Group by Answer
with rollup
结果如下:
Answer CSAT_Count CSAT_Score
----------------------------------------------
Average 13 26
Outstanding 126 378
Unstatisfactory 6 6
Total 145 NULL
我想让CSAT_Score中的NULL返回反映得分的总和,但我在想因为得分依赖于COUNT(*)来计算,我无法得到Rollup这样做我,因为我不能按汇总分组。
就像我上面所说,我知道存储计数结果的子查询,CTE或Temp表可以正常工作,但由于我是新手使用Rollup,我想知道是否还有其他我可以做的事情使这项工作的功能。
由于
答案 0 :(得分:0)
此版本的脚本使用rollup
。 (顺便说一句,它会产生相同的结果)
select coalesce(Answer,case Grouping_ID(Answer) when 1 then 'Total' end) as Answer
, Count(*) as CSAT_Count
, Sum(Case Answer
when 'Average' then 2
when 'Outstanding' then 3
when 'Unsatisfactory' then 1
end) as CSAT_Score
from CSAT_Table
Where Empl_ID = 98
Group by Answer
with rollup