40分求如下要求一条select语句!
全部分数求下面语句!结贴有分在加! 
 如下表:   
 学生表: 
 -------------- 
 学号               姓名 
 01                     张三 
 02                     李四   
 成绩表: 
 ------------- 
 学号            得分            课程代号 
 01                  85                     101 
 01                  98                     102 
 02                  88                     101 
 02                  89                     102   
 课程表: 
 -------------------- 
 课程代号            课程名称 
 101                              语文 
 102                              数学   
 求一条语句或存储过程,实现的结果如下: 
 姓名               语文         数学 
 张三                  85               98 
 李四                  88               89   
 一直困脑我的一个问题,是我太笨还是实现有点难度啊? 
------解决方案----------------------  创建表 
 create table S(学号 varchar(10),姓名 nvarchar(20)) 
 Go 
 create table C(课程代号 int,课程名称 nvarchar(20)) 
 Go 
 create table T(学号 varchar(10),得分 int,课程代号 int) 
 Go 
 --  插入测试数据 
 insert C select  '101 ', '语文 ' 
 insert C select  '102 ', '数学 ' 
 Go 
 insert S select  '01 ', '张三 ' 
 insert S select  '02 ', '李四 ' 
 Go 
 insert T select  '01 ',85,101 
 insert T select  '01 ',98,102 
 insert T select  '02 ',85,101 
 insert T select  '02 ',98,102 
 Go 
 --  查询 
 declare @sql varchar(4000) 
 set @sql= ' ' 
 select @sql=@sql+ ',max(case 课程代号 when  '+cast(C.课程代号 as varchar(10))+ ' then 得分 end) as  '+C.课程名称+ ' ' from C 
 exec( 'select 学号  '+@sql+ ' from T group by 学号 ') 
 Go 
 --  结果 
 学号         语文          数学           
 ---------- ----------- -----------  
 01         85          98 
 02         85          98
------解决方案--------------------create table 学生表(学号 varchar(10), 姓名 varchar(10)) 
 insert 学生表 select  '01 ',        '张三 ' 
 union all select  '02 ',        '李四 '   
 create table 成绩表(学号 varchar(10), 得分 int, 课程代号 int) 
 insert 成绩表  select  '01 ',      85,       101 
 union all select  '01 ',      98,       102 
 union all select  '02 ',      88,       101 
 union all select  '02 ',      89,       102   
 create table 课程表(课程代号 varchar(10), 课程名称 varchar(10)) 
 insert 课程表 select   '101 ',           '语文 ' 
 union all select  '102 ',          '数学 '     
 declare @sql varchar(8000) 
 set @sql= ' ' 
 select @sql=@sql+ ', '+quotename(课程名称)+ '=max(case when 课程代号= '+quotename(课程代号,  ' ' ' ')+ ' then 得分 else 0 end) ' 
 from 课程表 
 select @sql= 'select 学生表.姓名 '+@sql+ '  
 from 成绩表  
 left join 学生表 on 成绩表.学号=学生表.学号 group by 学生表.学号, 学生表.姓名 ' 
 exec(@sql)   
 --result 
 姓名         语文          数学           
 ---------- ----------- -----------  
 李四