SQL SERVER 2005 动态行转列SQL

declare @sql varchar ( 8000 )
select @sql = isnull ( @sql + ' , ' , '' ) + 课程 from tb group by 课程
exec ( ' select m.* , n.平均分 , n.总分 from
(select * from (select * from tb) a pivot (max(分数) for 课程 in (
' + @sql + ' )) b) m ,
(select 姓名 , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名) n
where m.姓名 = n.姓名
' )

你可能感兴趣的:(sql server 2005)