iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
自我挑戰組

C# 和 SQL 探索之路 - 2系列 第 18

Day 18: SQL 的 UNPIVOT 語法

  • 分享至 

  • xImage
  •  

大家好,今天是第十八天 ~
先前介紹了 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


上一篇
Day 17: SQL 用 PIVOT 語法旋轉資料
下一篇
Day 19: SQL 計算與上一筆的差值
系列文
C# 和 SQL 探索之路 - 230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言