日期:2014-05-18 浏览次数:20686 次
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
------解决方案--------------------