
少废话,直接上代码
drop table #TBL
DECLARE @sql_str VARCHAR(MAX)
DECLARE @sql_col VARCHAR(MAX)
SELECT @sql_col = ISNULL(@sql_col + ',','') + QUOTENAME([XingMing]) FROM [v_demo] GROUP BY [XingMing] --取所有需要转成字段名的行的字段
SET @sql_str='
SELECT * FROM #TBL
Pivot(
SUM([FenShu]) FOR XingMing IN( '+ @sql_col +')
) AS TBL2'
CREATE TABLE #TBL(XingMing varchar(50),KeMu Nvarchar(10),FenShu int)
INSERT INTO #TBL SELECT XingMing,[KeMu],[FenShu] FROM(SELECT XingMing,[KeMu],[FenShu] FROM(
SELECT XingMing,[Total] AS '总分',[YuWen] AS '语文',[YuWen] AS '数学',[YingYu] AS '英语' FROM [v_demo]
)P
UNPIVOT([FenShu] FOR [KeMu] in (总分, 语文,数学, 英语)
)AS A)A
EXEC(@sql_str)
