動態列的動態SQL Server PIVOT
您有一個包含多個欄位(「Name1」和「Name2」)和一個值的資料集列(“值”)。您希望將此資料轉換為透視格式,其中「Name1」成為列標題,值由「Name2」聚合。
使用動態SQL 的解決方案(SQL Server 2005 或更高版本)
由於SQL Server 2005 允許動態SQL,因此可以透過動態組裝PIVOT 查詢來解決這個問題。程式碼如下:
DECLARE @cols VARCHAR(1000) DECLARE @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot' EXECUTE ( @sqlquery )
無論您有多少個唯一的「Name1」值,此查詢都會動態執行。它將收集的「Name1」值指派給變數@cols,然後使用該變數動態建構@sqlquery 變數中的PIVOT 子句。然後執行最終查詢,產生所需的輸出。
其他資源:
以上是如何使用動態列動態透視 SQL Server 中的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!