当前位置: 代码迷 >> Sql Server >> 求多条记录合并为一条记录的sql语句。该怎么解决
  详细解决方案

求多条记录合并为一条记录的sql语句。该怎么解决

热度:62   发布时间:2016-04-27 12:57:24.0
求多条记录合并为一条记录的sql语句。
例如我有一张表
varchr(50) varchr(50) float 
学生姓名 课程 成绩
studentname course score
李三 语文 50
李三 英语 80
王五 语文 60
王五 英语 70

我现在想要的查询结果是
李三 语文 50 英语 80
王五 语文 60 英语 70

想了半天也没想出来。求大神指点。

表和数据sql语句:
SQL code
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)


------解决方案--------------------
SQL code
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 行受影响)
------解决方案--------------------
SQL code
select TF.studentname,TF.course,TF.score,TT.course,TT.scorefrom (select *from TBwhere course='语文') TFinner 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以上
SQL code
select studentname,语文,英语from CourseGradepivot (max(score) for course in([语文],英语)) as d studentname    语文    英语李三    50    80王五    60    70
------解决方案--------------------
探讨

SQL code
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.studentnam……
  相关解决方案