当前位置: 代码迷 >> Sql Server >> 的SQL语句
  详细解决方案

的SQL语句

热度:20   发布时间:2016-04-27 21:21:03.0
求一个的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(@sql)

drop table test

--结果
/*
  相关解决方案