求一个的SQL语句?
第一张表:Course课程表
course_id name teacher
1 语文 张三
2 数学 李四
3 外语 微微
第二张表: fenshu份数表
id swre course_id Num(学号)
1 80 1 001
2 60 2 001
3 90 3 001
4 85 1 002
5 98 2 002
要求查询结果为:
学号 语文 数学 外语
001 80 60 90
002 85 98 0
没有的课程显示0分.
------解决方案--------------------create table test (姓名 char(10),课程 char(10),成绩 int)
go
insert test values( '张三 ', '语文 ',80)
insert test values( '张三 ', '数学 ',86)
insert test values( '张三 ', '英语 ',75)
insert test values( '李四 ', '语文 ',78)
insert test values( '李四 ', '数学 ',85)
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ',sum(case 课程 when ' ' '+rtrim(课程)+ ' ' ' then 成绩 else 0 end) [ '+rtrim(课程)+ '] '
from (select distinct 课程 from test) as a
select @sql = @sql+ ' from test group by 姓名 '
exec