大家好,今天是第十八天 ~
先前介紹了 SQL 中的 PIVOT
語法,將直向的多列資料 (彙總) 轉為橫向欄位資料,今天再接著介紹 UNPIVOT
語法,可以反過來將橫向的欄位資料旋轉為直向多列的資料。
語法為
SELECT [標題欄位], [數值欄位], 非 UNPIVOT 欄位 ...
FROM [來源表格]
UNPIVOT ([數值欄位] FOR [標題欄位] IN [要旋轉的欄位])。
以下是範例。
-- 建立分數資料表 (名字, 國文, 數學, 英文) 與資料
CREATE TABLE Scores ([Name] VARCHAR(10), Chinese INT, Math INT, English INT);
INSERT INTO Scores VALUES ('Jack', 80, 60, 50);
INSERT INTO Scores VALUES ('Jeff', 80, 70, 85);
INSERT INTO Scores VALUES ('Justin', 74, 83, 65);
INSERT INTO Scores VALUES ('Aaron', 94, 92, 65);
-- 轉置分數資料
SELECT [Name], [Subject], Score
FROM
(
SELECT [Name], Chinese, Math, English
FROM Scores
) p
UNPIVOT
(
Score FOR [Subject] IN (Chinese, Math, English)
)
AS unpvt;
Using PIVOT and UNPIVOT - SQL Server - Microsoft Learn