SQL 經典:T-SQL 中的透視和逆透視解析
在數據庫管理中,SQL(結構化查詢語言)是一個不可或缺的工具。特別是在 Microsoft SQL Server 中,T-SQL(Transact-SQL)提供了許多強大的功能來處理數據。透視(PIVOT)和逆透視(UNPIVOT)是 T-SQL 中兩個重要的操作,能夠幫助用戶以不同的方式查看和分析數據。本文將深入探討這兩個操作的概念、用法及其實際應用。
透視(PIVOT)
透視操作的主要目的是將行數據轉換為列數據,這樣可以更直觀地展示數據。例如,假設我們有一個銷售數據表,記錄了不同產品在不同月份的銷售額。透視操作可以將每個產品的銷售額顯示為列,月份則作為行。
透視的語法
SELECT , , ..., , , ...
FROM
(
SELECT
FROM
) AS SourceTable
PIVOT
(
SUM()
FOR IN (, , ...)
) AS PivotTable;
透視的範例
假設我們有以下的銷售數據表:
CREATE TABLE SalesData (
Product NVARCHAR(50),
Month NVARCHAR(20),
Amount INT
);
INSERT INTO SalesData (Product, Month, Amount) VALUES
('Product A', 'January', 100),
('Product A', 'February', 150),
('Product B', 'January', 200),
('Product B', 'February', 250);
我們可以使用透視操作來將這些數據轉換為更易於理解的格式:
SELECT *
FROM
(
SELECT Product, Month, Amount
FROM SalesData
) AS SourceTable
PIVOT
(
SUM(Amount)
FOR Month IN ([January], [February])
) AS PivotTable;
執行上述查詢後,我們將得到一個新的表格,其中每個產品的銷售額在不同月份的數據將顯示為列。
逆透視(UNPIVOT)
逆透視操作則是將列數據轉換為行數據,這在需要將寬表轉換為長表時非常有用。例如,當我們需要將透視後的數據再次轉換回原始格式時,可以使用逆透視。
逆透視的語法
SELECT , ,
FROM
UNPIVOT
(
FOR IN (, , ...)
) AS UnpivotTable;
逆透視的範例
基於之前的透視結果,我們可以使用逆透視來將數據轉換回原始格式:
SELECT Product, Month, Amount
FROM
(
SELECT Product, [January], [February]
FROM PivotTable
) AS SourceTable
UNPIVOT
(
Amount FOR Month IN ([January], [February])
) AS UnpivotTable;
這樣,我們就能夠將透視後的數據恢復為原始的行格式,便於進一步的數據分析。
結論
透視和逆透視是 T-SQL 中非常有用的功能,能夠幫助用戶以不同的方式查看和分析數據。透視操作使得數據的展示更加直觀,而逆透視則提供了靈活性,讓用戶能夠隨時將數據轉換回原始格式。掌握這些操作對於數據分析和報告生成至關重要。
如果您對於數據庫管理和 SQL 有進一步的需求,考慮使用 香港 VPS 服務來搭建您的數據庫環境,享受高效穩定的性能。