高分请教这样一个查询?分数不够可以再加!

roc9698 2003-10-16 03:46:39
表结构和数据如下:
StudentID CourseName Score
00070401 通信原理 88
00070401 编译原理 85
00070401 人工智能 91
00070401 软件工程 90
00070402 软件工程 94
00070402 人工智能 95
00070403 通信原理 97
00070403 编译原理 83
00070403 软件工程 77
我想得到如下结果:
StudentID 通信原理 编译原理 人工智能 软件工程
00070401 88 85 91 90
00070402 0 0 95 94
00070403 97 83 0 77
这个Select 语句或者存储过程该如何实现?
...全文
34 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-16
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = 'select StudentID'
select @sql = @sql + ',sum(case CourseName when '''+CourseName+''' then Score else 0 end) ['+CourseName+']'
from (select distinct CourseName from 有一表) as a
select @sql = @sql+' from 有一表 group by StudentID'

exec(@sql)
go
sdhdy 2003-10-16
  • 打赏
  • 举报
回复
select StudentID ,sum(case CourseName when '通信原理' then score else 0 end) 通信原理,sum(case CourseName when '编译原理' then score else 0 end) 编译原理,
sum(case CourseName when '人工智能' then score else 0 end) 人工智能,
sum(case CourseName when '软件工程' then score else 0 end) 软件工程
from tablename group by StudentID
sdhdy 2003-10-16
  • 打赏
  • 举报
回复
select StudentID ,sum(case CourseName when '通信原理' then score else 0 end) 通信原理,sum(case CourseName when ' 编译原理' then score else 0 end) 编译原理,
sum(case CourseName when '人工智能' then score else 0 end) 人工智能,
sum(case CourseName when '软件工程' then score else 0 end) 软件工程
from tablename group by StudentID

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧