--键一张临时表
create table #t
(
名字 varchar(20),
课程 varchar(20),
分数 int
)
insert into #t values('张三','数学','88')
insert into #t values('张三','语文','99')
insert into #t values('张三','英语','77')
insert into #t values('李四','语文','77')
insert into #t values('李四','数学','88')
insert into #t values('李四','英语','99')
insert into #t values('王五','英语','99')
insert into #t values('李四','化学 ','99')
select * from #t--查询圆表数据
------行转列
declare @sql varchar(8000)
set @sql = 'select 名字 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from #t) as a
set @sql = @sql + ' from #t group by 名字'
exec(@sql)
drop table #t
----------------------------------------
来源:https://www.cnblogs.com/cl1006/p/6373194.html