日期:2014-05-19  浏览次数:20562 次

求一个的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