我逍遥:动态行列转置并求和动态列

来源:互联网 发布:网络防火墙是什么 编辑:程序博客网 时间:2024/05/16 09:20
DECLARE @sql VARCHAR(8000)
DECLARE @sql2 VARCHAR(8000)

SET @sql2 = ''
SET @sql = 'select 班级'
SELECT  @sql = @sql + ',isnull (max(case 学生 when ''' + 学生 + ''' then 成绩 end),0) as [' + 学生 + ']'
FROM    ( SELECT DISTINCT
                    学生
          FROM      成绩表
        ) AS a

SELECT  @sql2 = @sql2 + ' isnull (max(case 学生 when ''' + 学生 + ''' then 成绩 end),0) +'
FROM    ( SELECT DISTINCT
                    学生
          FROM      成绩表
        ) AS a
SET @sql2 = SUBSTRING(@sql2, 0, LEN(@sql2) - 1)

SELECT  @sql
SELECT  @sql2
SELECT  @sql = @sql + ',' + @sql2 + 'as ''qty'' from 成绩表 by 班级'

SELECT  @sql

EXEC(@sql) 
0 0