遇到需要按周或者按月份进行汇总的需求是,通常要实现行转列才能得到我们想要的结果。
步骤:
用 sum(case when 按什么条件进行汇总 then 1 else 0 end)
例子:
需要按时间分月进行每月设备数
sum(case when 初次升级时间 BETWEEN DATE’2021-01-01’ and DATE’2021-01-31’ then 1 else 0 end) 一月
select 排序,营业厅,
sum(case when 初次升级时间 BETWEEN DATE'2021-01-01' and DATE'2021-01-31' then 1 else 0 end) 一月,
sum(case when 初次升级时间 BETWEEN DATE'2021-02-01' and DATE'2021-02-28' then 1 else 0 end) 二月,
sum(case when 初次升级时间 BETWEEN DATE'2021-03-01' and DATE'2021-03-31' then 1 else 0 end) 三月,
sum(case when 初次升级时间 BETWEEN DATE'2021-04-01' and DATE'2021-04-30' then 1 else 0 end) 四月,
sum(case when 初次升级时间 BETWEEN DATE'2021-05-01' and DATE'2021-05-31' then 1 else 0 end) 五月,
sum(case when 初次升级时间 BETWEEN DATE'2021-06-01' and DATE'2021-06-30' then 1 else 0 end) 六月,
sum(case when 初次升级时间 BETWEEN DATE'2021-07-01' and DATE'2021-07-31' then 1 else 0 end) 七月,
sum(case when 初次升级时间 BETWEEN DATE'2021-08-01' and DATE'2021-08-31' then 1 else 0 end) 八月,
sum(case when 初次升级时间 BETWEEN DATE'2021-09-01' and DATE'2021-09-30' then 1 else 0 end) 九月,
sum(case when 初次升级时间 BETWEEN DATE'2021-10-01' and DATE'2021-10-31' then 1 else 0 end) 十月,
sum(case when 初次升级时间 BETWEEN DATE'2021-11-01' and DATE'2021-11-30' then 1 else 0 end) 十一月
from tmp_1111
group by 排序,营业厅