首頁 >資料庫 >mysql教程 >如何使用 UNPIVOT 將動態 SQL Server 欄位轉置為行?

如何使用 UNPIVOT 將動態 SQL Server 欄位轉置為行?

Linda Hamilton
Linda Hamilton原創
2024-12-05 04:39:11393瀏覽

How to Transpose Dynamic SQL Server Columns to Rows Using UNPIVOT?

使用UNPIVOT 將動態SQL Server 列轉置為行

在SQL Server 中,UNPIVOT 函數允許將列轉置為行,這是一種經常使用的技術稱為非旋轉。這在處理具有動態或可變列數的資料時特別有用。

範例場景

考慮以下表1:

Table1
-----------------------------------------
Id       abc  brt ccc ddq eee fff gga hxx
-----------------------------------------
12345     0    1   0   5   0   2   0   0  
21321     0    0   0   0   0   0   0   0   
33333     2    0   0   0   0   0   0   0   
41414     0    0   0   0   5   0   0   1   
55001     0    0   0   0   0   0   0   2   
60000     0    0   0   0   0   0   0   0 
77777     9    0   3   0   0   0   0   0

目標是將Table1 逆值0 :

Expected_Result_Table
---------------------
Id      Word   Qty>0
---------------------
12345    brt    1
12345    ddq    5
12345    fff    2
33333    abc    2
41414    eee    5
41414    hxx    1
55001    hxx    2
77777    abc    9
77777    ccc    3

使用UNPIVOT 的解決方案

UNPIVOT 函數採用具有多個列的表,並將其轉換為具有兩個附加列的更寬的表:一個「值」包含來自原始表列的數據的列和識別來源的「名稱」列列。

SELECT Id,
       name AS Word,
       value AS Qty>0
FROM Table1
UNPIVOT (value FOR name IN (abc, brt, ccc, ddq, eee, fff, gga, hxx)) AS unpvt
WHERE value > 0;

此查詢將產生預期結果。

以上是如何使用 UNPIVOT 將動態 SQL Server 欄位轉置為行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn