使用動態查詢在SQL Server中動態透視資料
本文介紹如何將日期、類別和金額列的資料轉換為更結構化的格式,並按日期和類別分組金額。
為此,可以使用動態透視查詢。透視是SQL Server的函數,可讓您將表格的行旋轉為列。在本例中,透視點是日期列,產生的列將是類別。
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX);</code>
為了建立動態透視查詢,我們先定義兩個變數:@cols
用來保存類別,@query
用於儲存最終查詢。
<code class="language-sql">SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) FROM temp c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')</code>
接下來,我們透過用逗號連接不同的類別來建立@cols
變量,確保它們用雙引號括起來。
<code class="language-sql">set @query = 'SELECT date, ' + @cols + ' from ( select date , amount , category from temp ) x pivot ( max(amount) for category in (' + @cols + ') ) p '</code>
最後,我們將查詢字串賦值給@query
。此查詢首先選擇日期列和所有類別作為列。然後,它使用PIVOT旋轉數據,以日期列作為行標題,類別作為列標題。
<code class="language-sql">execute(@query)</code>
執行@query
將傳回所需的結果,根據需要透視資料。
<code>日期 ABC DEF GHI 2012-01-01 00:00:00.000 1000.00 NULL NULL 2012-02-01 00:00:00.000 NULL 500.00 800.00 2012-02-10 00:00:00.000 NULL 700.00 NULL 2012-03-01 00:00:00.000 1100.00 NULL NULL</code>
以上是如何使用動態查詢動態透視 SQL Server 中的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!