日期:2014-05-18 浏览次数:20555 次
--有4个表Student,Operation,Comment,Handed --Student表数据 --学号 姓名 密码 --201013201607 qqq 111 --201013201667 fgdfg 111 --223123123312 xxx 111 if OBJECT_ID('Student')is not null drop table Student go create table Student(学号 varchar(20), 姓名 varchar(20), 密码 int ) insert into Student values(201013201607, 'qqq' ,111 ) insert into Student values(201013201667 ,'fgdfg', 111 ) insert into Student values(223123123312, 'xxx', 111 ) --Operation表的数据 --编号 题目 内容 课程编号 教师编号 时间 --151914461 课后作业 ccccccccccasdfasd 1 20103110111 2012/2/20 0:00:00 --7142141717 数组练习 <p>发顺丰是的</p> 1 20103110111 2012/2/21 0:00:00 if OBJECT_ID('Operation')is not null drop table Operation go create table Operation(编号 varchar(20), 题目 varchar(20), 内容 varchar(50), 课程编号 int,教师编号 varchar(20), 时间 datetime) insert into Operation values(151914461, '课后作业' ,'ccccccccccasdfasd', 1 ,20103110111 ,'2012/2/20 0:00:00') insert into Operation values(7142141717, '数组练习' ,'<p>发顺丰是的</p>', 1 ,20103110111 ,'2012/2/21 0:00:00') --Comment表的数据 --编号 评价 成绩 Handed编号 --3 xxx有问题 一般 15 --4 还行 良好 16 --5 不好 NULL 17 --6 很好 优秀 18 if OBJECT_ID('Comment')is not null drop table Comment go create table Comment(编号 int,评价 varchar(20),成绩 varchar(20),Handed编号 int) insert into Comment values(3, 'xxx有问题' ,'一般', 15 ) insert into Comment values(4, '还行', '良好' ,16) insert into Comment values(5, '不好', 'NULL', 17 ) insert into Comment values(6, '很好', '优秀', 18 ) --Handed表的数据 --编号 Operation编号 学号 --15 151914461 201013201607 --16 151914461 201013201667 --17 7142141717 201013201607 --18 7142141717 201013201667 if OBJECT_ID('Handed')is not null drop table Handed go create table Handed(编号 int,Operation编号 varchar(20),学号 varchar(20)) insert into Handed values(15 ,151914461 ,201013201607) insert into Handed values(16 ,151914461 ,201013201667) insert into Handed values(17, 7142141717, 201013201607) insert into Handed values(18, 7142141717 ,201013201667) --我想得出 --学号 姓名 课后作业 数组练习 --201013201667 fgdfg 良好 优秀 --201013201607 qqq 一般 NULL --223123123312 xxx null NULL ;with ct as ( select s.学号,s.姓名,o.题目,c.成绩 from Student s left join Handed h on s.学号=h.学号 left join Operation o on h.Operation编号=o.编号 left join Comment c on h.编号=c.Handed编号) select * from ct a pivot (max(成绩) for 题目 in (课后作业,数组练习 )) b 学号 姓名 课后作业 数组练习 -------------------- -------------------- -------------------- -------------------- 201013201667 fgdfg 良好 优秀 201013201607 qqq 一般 NULL 223123123312 xxx NULL NULL (3 行受影响)
------解决方案--------------------
--有4个表Student,Operation,Comment,Handed --Student表数据 --学号