適用場景:須要將行數據轉換成列數據spa
例子:code
如今有一個學生的成績表blog
可是咱們須要將每一個學生的成績聚集到一條數據上,這時候就能夠用到行轉列。數學
代碼以下class
1、不使用 PIVOTim
1 SELECT 2 MAX('學生'+CONVERT(NCHAR(10),[Stu_ID])) AS 學生 3 ,MAX(CASE WHEN Course='語文' THEN ISNULL(Score,0) ELSE 0 END) AS 語文成績 4 ,MAX(CASE WHEN Course='數學' THEN ISNULL(Score,0) ELSE 0 END) AS 數學成績 5 ,MAX(CASE WHEN Course='英語' THEN ISNULL(Score,0) ELSE 0 END) AS 英語成績 6 ,CONVERT(DECIMAL(4,1),ROUND(AVG(Score),1)) AS 平均成績 7 FROM [EFDemo].[dbo].[Table_1] 8 GROUP BY Stu_ID
2、使用 PIVOT數據
SELECT * FROM [EFDemo].[dbo].[Table_1] AS P PIVOT(MAX(P.Score) FOR P.Course IN ([語文],[數學],[英語]) AS T
轉換後查詢到的結果集查詢