SQL Server中列轉行的深度指南
當處理包含大量指標列的表時,將這些列轉換為行對於分析和報告目的非常有利。此轉換涉及重新構建數據以創建具有不同架構的新表。
問題陳述
考慮以下表架構:
[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]
目標是將這些指標列轉換為行,從而創建一個具有以下架構的新表:
[ID] [EntityId] [IndicatorName] [IndicatorValue]
使用UNPIVOT的解決方案
完成此任務的一種優雅解決方案是利用UNPIVOT函數。 UNPIVOT的語法如下:
UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))
在本例中,unpivot列表示指標值(例如,“Indicator1”、“Indicator2”等),而pivot列表示列名本身。以下查詢說明瞭如何使用UNPIVOT:
select id, entityId,
indicatorname,
indicatorvalue
from yourtable
unpivot
(
indicatorvalue
for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;
通過執行此查詢,指標列將轉換為行,指標名稱和值將填充新列。
替代方案
除了UNPIVOT之外,還有其他方法可以將列轉換為行:
解決方案的選擇取決於具體的需要和使用的SQL Server版本。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3