日期:2014-05-17 浏览次数:20898 次
SQL> with t(教师号,星期号,是否有课) as( 2 select 1,2,'有' from dual 3 union all select 1,3,'有' from dual 4 union all select 2,1,'有' from dual 5 union all select 3,2,'有' from dual 6 union all select 1,2,'有' from dual 7 ) 8 select 教师号, 9 sum(case when 星期号=1 and 是否有课='有' then 1 else 0 end) 星期一, 10 sum(case when 星期号=2 and 是否有课='有' then 1 else 0 end) 星期二, 11 sum(case when 星期号=3 and 是否有课='有' then 1 else 0 end) 星期三 12 from t 13 group by 教师号 14 order by 教师号; 教师号 星期一 星期二 星期三 ---------- ---------- ---------- ---------- 1 0 2 1 2 1 0 0 3 0 1 0
------解决方案--------------------
SQL> select * from teacher; ID WEEK H ---------- ---------- - 1 2 y 1 3 y 2 1 y 3 2 y 1 2 y SQL> select id,sum(case when week = 1 then 1 else null end) mon,sum(case when week = 2 then 1 else null end ) tue,sum(case when week = 3 then 1 else null end) wed from teacher group by id; ID MON TUE WED ---------- ---------- ---------- ---------- 1 2 1 2 1 3 1
------解决方案--------------------
CREATE TABLE t_teacher (t_id NUMBER,t_q NUMBER ,t_yn VARCHAR2(10));
INSERT INTO t_teacher VALUES(1,2,'有');
INSERT INTO t_teacher VALUES(1,3,'有');
INSERT INTO t_teacher VALUES(2,1,'有');
INSERT INTO t_teacher VALUES(3,2,'有');
INSERT INTO t_teacher VALUES(1,2,'有');
COMMIT;
SELECT t.t_Id 教师号,
SUM(CASE
WHEN t.t_q = 1 AND t.t_Yn = '有' THEN
1
ELSE
NULL
END) 星期一,
sum(CASE
WHEN t.t_q = 2 AND t.t_Yn = '有' THEN
1
ELSE
NULL
END) 星期二,
sum(CASE
WHEN t.t_q = 3 AND t.t_Yn = '有' THEN
1
ELSE
NULL
END) 星期三
FROM t_Teacher t
GROUP BY t.t_Id
------解决方案--------------------
select teacherno 教师号,
sum(case when flag='有' and weekday=1 then 1 else 0 end) 星期一,
sum(case when flag='有' and weekday=2 then 1 else 0 end) 星期二,
sum(case when flag='有' and weekday=3 then 1 else 0 end) 星期三,
sum(case when flag='有' and weekday=4 then 1 else 0 end) 星期四,
sum(case when flag='有' and weekday=5 then 1 else 0 end) 星期五,
sum(case when flag='有' and weekday=6 or weekday=7 then 1 else 0 end) 星期日
from test
group by teacherno