视图:
create view view_1
as
SELECT dbo.课程安排.星期, dbo.课程信息表.课名, dbo.课程安排.班级
FROM dbo.课程安排 INNER JOIN
dbo.课程信息表 ON dbo.课程安排.课名编号 = dbo.课程信息表.课程编号 INNER JOIN
dbo.老师信息表 ON dbo.课程安排.老师编号 = dbo.老师信息表.老师编号
WHERE (dbo.课程安排.节数 = '1')
create view view_2
as
SELECT dbo.课程安排.星期, dbo.课程信息表.课名, dbo.课程安排.班级
FROM dbo.课程安排 INNER JOIN
dbo.课程信息表 ON dbo.课程安排.课名编号 = dbo.课程信息表.课程编号 INNER JOIN
dbo.老师信息表 ON dbo.课程安排.老师编号 = dbo.老师信息表.老师编号
WHERE (dbo.课程安排.节数 = '2')
存储过程:
CREATE PROCEDURE pro_kc @班级 varchar(10)
as
SELECT dbo.VIEW1.星期, dbo.VIEW1.课名 AS 第一节课, dbo.VIEW2.课名 AS 第二节课
FROM dbo.VIEW1 CROSS JOIN
dbo.VIEW2
WHERE (dbo.VIEW1.班级 = @班级)
--显示的时候就用交叉表
declare @s varchar(80000)
set @s=''
select @s=@s+',['+星期+']=max(case 星期 when '''+星期+''' then 课程名 else '''' end)'
from 课程表
group by 星期
exec('select 班级,第几节'+@s+' from 课程表
group by 班级,第几节')