您将需要使用“动态数据透视表”来获取所需的列列表。这将首先检索列的列表,然后旋转该列表。类似于以下内容:
DECLARE @cols AS NVARCHAr(MAX), @query AS NVARCHAr(MAX);select @cols = STUFF((SELECT distinct ',' + QUOTENAME(aid) FROM m FOR XML PATH(''), TYPE ).value('.', 'NVARCHAr(MAX)') ,1,1,'')set @query = 'SELECt s, ' + @cols + ' from ( select grade, aid, s from m) x pivot ( sum(grade) for aid in (' + @cols + ') ) p ORDER BY p.s'execute(@query)


