--行列转换(行转列)
create table #tb
(
姓名 nvarchar(20),
科目 nvarchar(20),
成绩 int
)
go
insert into #tb
select '张三','语文',98
union
select '张三','数学',93
union
select '张三','英语',78
union
select '李四','数学',87
union
select '李四','英语',82
go
select * from #tb
go
declare @sql varchar(1000)
set @sql='select 姓名 '
select @sql=@sql+',sum(case 科目 when '''+科目+''' then 成绩 else 0 end) as '+科目
from (select distinct 科目 from #tb) a
set @sql=@sql+' from #tb group by 姓名'
exec (@sql)
go
drop table #tb
go
/*****************************
姓名 科目 成绩
李四 数学 87
张三 数学 93
李四 英语 82
张三 英语 78
张三 语文 98
姓名 数学 英语 语文
李四 87 82 0
张三 93 78 98
*****************************/