日期:2014-05-18 浏览次数:20468 次
create table 班级任课表 (年级 varchar(6), 班 int, 科目 varchar(6), 教师 varchar(6)) insert into 班级任课表 select '初一', '1', '语文', '赵一' union all select '初一', '3', '语文', '赵一' union all select '初一', '1', '数学', '钱二' union all select '初一', '3', '数学', '周三' union all select '初二', '2', '语文', '孙兵' union all select '初二', '3', '语文', '张飞' union all select '初二', '4', '语文', '刘备' union all select '初二', '2', '英语', '赵一' union all select '初二', '3', '英语', '赵一' union all select '初二', '4', '英语', '钱二' union all select '初三', '1', '语文', '周三' union all select '初三', '2', '语文', '孙兵' union all select '初三', '3', '语文', '张飞' union all select '初三', '1', '数学', '刘备' union all select '初三', '2', '数学', '赵一' union all select '初三', '3', '数学', '赵一' union all select '初三', '1', '英语', '钱二' union all select '初三', '2', '英语', '周三' union all select '初三', '3', '英语', '孙兵' --1 create view 初一视图 as with t as (select 年级,班, max(case when 科目='语文' then 教师 else '' end) '语文', max(case when 科目='数学' then 教师 else '' end) '数学', max(case when 科目='英语' then 教师 else '' end) '英语' from 班级任课表 group by 年级,班 ) select 班,语文,数学,英语 from t where 年级='初一' select * from 初一视图 班 语文 数学 英语 ----------- ------ ------ ------ 1 赵一 钱二 3 赵一 周三 --2 create view 初二视图 as with t as (select 年级,班, max(case when 科目='语文' then 教师 else '' end) '语文', max(case when 科目='数学' then 教师 else '' end) '数学', max(case when 科目='英语' then 教师 else '' end) '英语' from 班级任课表 group by 年级,班 ) select 班,语文,数学,英语 from t where 年级='初二' select * from 初二视图 班 语文 数学 英语 ----------- ------ ------ ------ 2 孙兵 赵一 3 张飞 赵一 4 刘备 钱二 --3 create view 初三视图 as with t as (select 年级,班, max(case when 科目='语文' then 教师 else '' end) '语文', max(case when 科目='数学' then 教师 else '' end) '数学', max(case when 科目='英语' then 教师 else '' end) '英语' from 班级任课表 group by 年级,班 ) select 班,语文,数学,英语 from t where 年级='初三' select * from 初三视图 班 语文 数学 英语 ----------- ------ ------ ------ 1 周三 刘备 钱二 2 孙兵 赵一 周三 3 张飞 赵一 孙兵
------解决方案--------------------
一定要视图+动态SQL的话,貌似行不通喔.
------解决方案--------------------
/*
现在有以下几个表:
班级列表
年级 班
初一 1
初一 3
初二 2
初二 3
初二 4
初三 1
初三 2
初三 3
年级开课表
年级 科目
初一 语文
初一 数学
初二 语文
初二 英语
初三 语文
初三 数学
初三 英语
我根据以上两个表生成以下这个表:
班级任课表
年级 班 科目 教师
初一 1 语文 赵一
初一 3 语文 赵一
初一 1 数学 钱二
初一 3 数学 周三
初二 2 语文 孙兵
初二 3 语文 张飞
初二 4 语文 刘备
初二 2 英语 赵一
初二 3 英语 赵一
初二 4 英语 钱二
初三 1 语文 周三
初三 2 语文 孙兵
初三 3 语文 张飞
初三 1 数学 刘备
初三 2 数学 赵一
初三 3 数学 赵一
初三 1 英语 钱二
初三 2 英语 周三
初三 3 英语 孙兵