首頁 > 資料庫 > mysql教程 > 如何使用動態SQL Pivot進行數據轉換,並使用空字符串處理?

如何使用動態SQL Pivot進行數據轉換,並使用空字符串處理?

Barbara Streisand
發布: 2025-01-25 18:42:11
原創
929 人瀏覽過

使用動態SQL PIVOT進行數據轉換,處理NULL或空字符串

本文介紹如何將表中的數據轉換為類別透視的格式,其中空值表示為NULL或空字符串。這可以通過動態SQL PIVOT查詢實現。

使用PIVOT進行動態轉換

以下步驟概述了創建動態PIVOT查詢的過程:

  1. 創建臨時表: 創建一個臨時表來存儲原始數據並定義必要的列。
  2. 生成動態列列表: 使用子查詢提取不同的類別並將它們連接成逗號分隔的字符串。
  3. 構建PIVOT查詢: 使用生成的列列表作為PIVOT參數構建PIVOT查詢。 MAX()聚合函數檢索每個類別的最大值。
  4. 執行查詢: 執行動態PIVOT查詢以生成轉換後的結果。
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT date, ' + @cols + ' from 
            (
                select date
                    , amount
                    , category
                from temp
           ) x
            pivot 
            (
                 max(amount)
                for category in (' + @cols + ')
            ) p '


execute(@query)</code>
登入後複製

結果

生成的表將包含表示唯一類別的列,日期作為行。空值可以根據所需的輸出通過NULL或空字符串進行處理。

示例結果:

<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>
登入後複製

How to Use Dynamic SQL PIVOT for Data Transformation with NULL or Empty String Handling?

以上是如何使用動態SQL Pivot進行數據轉換,並使用空字符串處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板