使用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中文網其他相關文章!