22,207
社区成员
发帖
与我相关
我的任务
分享
--如果课程固定为这几个。
select id ,
max(case when 课程 = '英语' then 成绩 else 0 end) [英语],
max(case when 课程 = '数学' then 成绩 else 0 end) [数学],
max(case when 课程 = '政治' then 成绩 else 0 end) [政治],
max(case when 课程 = '网络基础' then 成绩 else 0 end) [网络基础],
max(case when 课程 = '计算机基础' then 成绩 else 0 end) [计算机基础]
from tb
group by id
--如果课程名称不固定,需要使用动态SQL。
declare @sql varchar(8000)
set @sql = 'select id '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 成绩 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' from tb group by id'
exec(@sql)
--如果课程固定为这几个。
select id ,
max(case when 课程 = '英语' then 成绩 else 0 end) [英语],
max(case when 课程 = '数学' then 成绩 else 0 end) [数学],
max(case when 课程 = '政治' then 成绩 else 0 end) [政治],
max(case when 课程 = '网络基础' then 成绩 else 0 end) [网络基础],
max(case when 课程 = '计算机基础' then 成绩 else 0 end) [计算机基础]
from tb
group by id
declare @sql varchar(8000)
set @sql = 'select id, '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 成绩 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' from tb group by id'
exec(@sql)