> SQL Server的樞軸函數提供了一種重組數據的強大方法,將行轉換為列以改進分析和報告。當您需要以更具用戶友好的表格格式顯示數據時,這一點尤其有用。
>想像一個臨時桌子持有銷售數字,並提供商店編號,週數和銷售量的列。要在垂直列出和水平列出的商店中顯示此數據
1。動態識別週數
由於週數是可變的,因此我們首先需要確定數據集中存在的唯一周數。 這可以使用以下方式實現:
<code class="language-sql">SELECT DISTINCT Week FROM yt;</code>
2。動態SQL查詢結構 接下來,我們構建動態SQL查詢。這涉及創建一個包含樞軸操作的列名稱的字符串。 以下代碼生成此字符串:
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SELECT @cols = STUFF((SELECT ',' + QUOTENAME(Week) FROM yt GROUP BY Week ORDER BY Week FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'');</code>3。構建樞軸查詢
現在,我們構建了樞軸查詢本身,並結合了動態生成的列字符串:
<code class="language-sql">SET @query = 'SELECT store,' + @cols + ' FROM ( SELECT store, week, xCount FROM yt ) x PIVOT ( SUM(xCount) FOR week IN (' + @cols + ') ) p;';</code>4。執行樞軸查詢
> 最後,使用以下方式執行動態樞軸查詢
結果:<code class="language-sql">EXECUTE(@query);</code>
>輸出將是一張表,顯示第一列中的存儲號碼,每週數字作為列標題。 相應的銷售量將填充表單元,並有效地總結原始數據。 通過利用SQL Server的Pivot函數,您可以有效地將面向行的數據轉換為更容易解釋和分析的列格式,簡化數據報告和分析任務。
以上是如何使用SQL Server的PIVOT函數將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!