SQL 行轉列的運用

適用場景:需要將行數據轉換成列數據

例子:

現在有一個學生的成績表

 

但是我們需要將每個學生的成績彙集到一條數據上,這時候就可以用到行轉列。

代碼如下

一、不使用  PIVOT

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

二、使用 PIVOT

   SELECT * FROM [EFDemo].[dbo].[Table_1]  AS P PIVOT(MAX(P.Score) FOR P.Course IN ([語文],[數學],[英語]) AS T

 

轉換後查詢到的結果集

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章