写一条sql语句让你变为所要求的表

教师号  星期号 是否有课
 1    2   有
 1    3   有
 2    1   有
 3    2   有
 1    2   有
写一条sql语句让你变为这样的表
教师号 星期⼀一 星期⼆二 星期三
 1       2   1 
 2   1   
 3       1
(各星期下的数字表示:对应的教师在星期几已经排的课数)

SELECT s.教师号,
(CASE WHEN 星期号=1 THEN s.counts ELSE 0 END) '星期一',
(CASE WHEN 星期号=2 THEN s.counts ELSE 0 END) '星期二',
(CASE WHEN 星期号=3 THEN s.counts ELSE 0 END) '星期三',
(CASE WHEN 星期号=4 THEN s.counts ELSE 0 END) '其他'
FROM
(SELECT t.教师号,t.星期号,COUNT(星期号) counts
FROM Table t WHERE 是否有课='有' GROUP BY 教师号,星期号) s GROUP BY 教师号
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-09
先case when 语句判断或者 union
然后分组查询下就可以了追问

求详细步骤。

追答

select 教师号,sum(星期一) as 星期一,sum(星期二) as 星期二,sum(星期三) as 星期三,sum(星期四) as 星期四,sum(星期五) as 星期五,
from(select 教师号,
case when 星期号=1 then 1 else 0 end as 星期一,
case when 星期号=2 then 1 else 0 end as 星期二,
case when 星期号=3 then 1 else 0 end as 星期三,
case when 星期号=4 then 1 else 0 end as 星期四,
case when 星期号=5 then 1 else 0 end as 星期五
from Tab
)A
group by 教师号

本回答被网友采纳
相似回答