T-SQL 中的動態透視
將表格資料轉換為更簡潔的格式對於資料分析和報表產生至關重要。一種常用的技術是透視,它涉及將行轉換為列。在本例中,我們的目標是從類似以下結構的表格中透視資料:
ItemID | ColumnName | Value |
---|---|---|
1 | name | Peter |
1 | phone | 12345678 |
1 | [email protected] | |
2 | name | John |
2 | phone | 87654321 |
2 | [email protected] | |
3 | name | Sarah |
3 | phone | 55667788 |
3 | [email protected] |
轉換為更容易使用者理解的結構:
ItemID | name | phone | |
---|---|---|---|
1 | Peter | 12345678 | [email protected] |
2 | John | 87654321 | [email protected] |
3 | Sarah | 55667788 | [email protected] |
要在 T-SQL 中使用動態透視實現此操作,請按照以下步驟操作:
建立動態列清單:
<code class="language-sql"> DECLARE @cols NVARCHAR(2000) SELECT @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT '],[' + t.ColumnName FROM #Table AS t FOR XML PATH('') ), 1, 2, '') + ']' </code>
建立動態查詢:
<code class="language-sql"> DECLARE @query NVARCHAR(4000) SET @query = N'SELECT ID,'+ @cols +' FROM (SELECT t1.ID,t1.ColumnName , t1.Value FROM #Table AS t1) p PIVOT (MAX([Value]) FOR ColumnName IN ( '+ @cols +' )) AS pvt;' </code>
執行查詢:
<code class="language-sql"> EXECUTE(@query)</code>
產生的查詢將動態地透視數據,創建一個更緊湊且易於閱讀的表結構。
這種方法為資料透視提供了一種靈活的機制,尤其是在列名是動態的或可能發生變化的情況下。它允許高效且自動化的數據轉換,使其成為各種數據分析和報表應用程式的強大工具。
以上是如何在T-SQL中實作表格資料的動態透視?的詳細內容。更多資訊請關注PHP中文網其他相關文章!