首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求1SQL,答案,高手帮忙

2012-01-22 
求1SQL,在线等答案,高手帮忙!Student--学生表IDName1张三2李四3陈红Course--纪录课程表IDName1英语2语文3

求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
*/

热点排行