首先创建一个表SQL 如下
--创建表
create table tb_teacher_leson(tid int,week int,judge varchar2(5));
insert into tb_teacher_leson values(1,2,'有');
insert into tb_teacher_leson values(1,3,'有');
insert into tb_teacher_leson values(2,1,'有');
insert into tb_teacher_leson values(3,2,'有');
insert into tb_teacher_leson values(1,2,'有');
commit;
数据整体格式如下
我们想要的格式如下
解析这些 首先 我们要对这个表划分一下粒度 老师是唯一的
根据老师id进行分组
这样 就分成了三组 然后1号老师在week列 2出险过两次 我们可以采取sum函数进行汇总 当 week = 2 的时候 赋给1 出现过两次 就sum 1 + 1 = 2
查询的sql如下
select decode(tid,'1','一号老师','2','二号老师','三号老师') as 老师序号
,sum(case week when 1 then 1 else 0 end ) as 周一
,sum(case week when 2 then 1 else 0 end ) as 周二
,sum(case week when 3 then 1 else 0 end ) as 周三
from tb_teacher_leson
group by tid