日期:2014-05-18 浏览次数:20605 次
create table CourseGrade( studentname varchar(50), course varchar(50), score float ) insert into CourseGrade values('李三','语文',50) insert into CourseGrade values('李三','英语',80) insert into CourseGrade values('王五','语文',60) insert into CourseGrade values('王五','英语',70)
select studentname, sum(case when course = '语文' then score else 0 end) as '语文' , sum(case when course = '英语' then score else 0 end) as '英语' from TB group by studentname /* studentname 语文 英语 ----------- ----------- ----------- 李三 50 80 王五 60 70 (2 行受影响)
------解决方案--------------------
select TF.studentname,TF.course,TF.score,TT.course,TT.score from (select * from TB where course='语文') TF inner join (select * from TB where course='英语') TT on TT.studentname =TF.studentname /* studentname course score course score ----------- ------ ----------- ------ ----------- 李三 语文 50 英语 80 王五 语文 60 英语 70 (2 行受影响)
------解决方案--------------------
行专列 SQL 2000用2楼
SQL 2005以上
select studentname,语文,英语 from CourseGrade pivot (max(score) for course in([语文],英语)) as d studentname 语文 英语 李三 50 80 王五 60 70
------解决方案--------------------