呵呵,这是个有意思的问题,
比如将下面表数据
Name Course Score
张三 语文 80
张三 数学 90
张三 英语 78
李四 数学 98
李四 英语 88
王五 数学 100
转换成 下面结构
姓名 数学 英语 语文
李四 98 88 NULL
王五 100 NULL NULL
张三 90 78 80
下面的SQL是一种解法:
DECLARE @Sql VARCHAR(MAX)
SET @Sql = 'SELECT Name'
SELECT @Sql = @Sql + ',SUM(CASE Course WHEN ''' + Course + ''' THEN Score END) AS ' + Course
FROM 表名 GROUP BY Course
SET @Sql = @Sql + ' FROM 表名 GROUP BY Name'
EXEC(@Sql) |