原始資料:每列一筆「學生-科目-分數」。
CREATE TABLE StudentScores (UserName NVARCHAR(20), Subject NVARCHAR(30), Score FLOAT);
INSERT ... -- Nick/Kent 四科分數
SELECT UserName,
MAX(CASE Subject WHEN '語文' THEN Score ELSE 0 END) AS '語文',
MAX(CASE Subject WHEN '數學' THEN Score ELSE 0 END) AS '數學',
MAX(CASE Subject WHEN '英語' THEN Score ELSE 0 END) AS '英語',
MAX(CASE Subject WHEN '生物' THEN Score ELSE 0 END) AS '生物'
FROM StudentScores
GROUP BY UserName;
結果:每生一列,四科分數橫向展開(圖 1)。

圖 1. 行轉列查詢結果
SELECT UserName, [語文], [數學], [英語], [生物]
FROM StudentScores
PIVOT (MAX(Score) FOR Subject IN ([語文],[數學],[英語],[生物])) AS pvt;
語法更簡潔、可讀性更高。列轉行對應使用 `UNPIVOT`。