group by rollup() 括号里面的内容跟顺序有关
select
分组,
姓名,grouping(分组) a,grouping(姓名) b ,
case when grouping(分组) = 1 then '合计'
when grouping(姓名) = 1 then 分组 || '组' else 姓名 end 姓名,
sum(今日金额) 今日金额,
sum(本周金额) 本周金额,
sum(本月金额) 本月金额
from t1204
group by rollup (分组, 姓名)
SELECT CASE
WHEN 姓名 IS NULL AND 分组 = 1 THEN '1组'
WHEN 姓名 IS NULL AND 分组 = 2 THEN '2组'
WHEN 姓名 IS NULL AND 分组 IS NULL THEN '总计'
ELSE 姓名 END 姓名,
今日金额,
本周金额,
本月金额
FROM (SELECT t.姓名, SUM(t.今日金额) 今日金额, SUM(t.本周金额) 本周金额, SUM(t.本月金额) 本月金额, 分组 FROM T1204 t GROUP BY CUBE(t.姓名,t.分组)
HAVING (姓名 IS NULL) OR (姓名 IS NOT NULL AND 分组 IS NOT null)
ORDER BY t.分组)
select 姓名,今日金额,本周金额,本月金额 from
(
select 姓名,今日金额,本周金额,本月金额,分组 as 排序标志 from T1204
union all
select concat(分组,'组') as 姓名,sum(今日金额) as 今日金额,sum(本周金额) as 本周金额,sum(本月金额) as 本月金额,avg(分组)+0.5 as 排序标志
from T1204
group by 分组
union all
select '总计' as 姓名,sum(今日金额) as 今日金额,sum(本周金额) as 本周金额,sum(本月金额) as 本月金额 ,sum(分组) as 排序标志
from T1204
)a
order by 排序标志