SQL Server中列轉行的深度指南
當處理包含大量指標列的表時,將這些列轉換為行對於分析和報告目的非常有利。此轉換涉及重新建構資料以建立具有不同架構的新表。
問題陳述
考慮以下表架構:
<code>[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]</code>
目標是將這些指標列轉換為行,從而建立一個具有以下架構的新表:
<code>[ID] [EntityId] [IndicatorName] [IndicatorValue]</code>
使用UNPIVOT的解決方案
完成此任務的一種優雅解決方案是利用UNPIVOT函數。 UNPIVOT的語法如下:
<code>UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))</code>
在本例中,unpivot列表示指標值(例如,「Indicator1」、「Indicator2」等),而pivot列表示列名本身。以下查詢說明如何使用UNPIVOT:
<code>select id, entityId, indicatorname, indicatorvalue from yourtable unpivot ( indicatorvalue for indicatorname in (Indicator1, Indicator2, Indicator3) ) unpiv;</code>
透過執行此查詢,指標列將轉換為行,指標名稱和值將填入新列。
替代方案
除了UNPIVOT之外,還有其他方法可以將列轉換為行:
解決方案的選擇取決於具體的需要和使用的SQL Server版本。
以上是如何在SQL Server中有效率地將列轉換為行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!