求1SQL,在线等答案,高手帮忙!
Student --学生表
ID Name
1 张三
2 李四
3 陈红
Course --纪录课程表
ID Name
1 英语
2 语文
3 数学
StuID CourseID mark
1 1 80
1 2 90
2 1 90
2 3 100
3 1 70
我现在想将以下格式查询输出
StuCourseMark -学生选课成绩表
StuID 英语 语文 数学
1 80 90
2 90 100
3 70
[解决办法]
declare @sql varchar(8000)
set @sql = 'select StuID '
select @sql = @sql + ' ,sum(case Name when ' ' ' + Name + ' ' ' then mark else 0 end) [ ' + Name + '] '
from
(
select StuID,c.Name,mark from Score inner join Course c on Score.CourseID=c.ID
)a
group by Name
set @sql = @sql + ' from
(
select StuID,c.Name,mark from Score inner join Course c on Score.CourseID=c.ID
)a group by StuID '
exec(@sql)
/*
StuID 数学 英语 语文
----------- ----------- ----------- -----------
1 0 80 90
2 100 90 0
3 0 0 70
*/