Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggunakan PIVOT SQL Dinamik untuk Transformasi Data dengan NULL atau Pengendalian Rentetan Kosong?

Bagaimana untuk Menggunakan PIVOT SQL Dinamik untuk Transformasi Data dengan NULL atau Pengendalian Rentetan Kosong?

Barbara Streisand
Barbara Streisandasal
2025-01-25 18:42:11934semak imbas

Gunakan SQL PIVOT dinamik untuk penukaran data untuk mengendalikan rentetan NULL atau kosong

Artikel ini menerangkan cara menukar data dalam jadual ke dalam format pangsi kategori, dengan nilai nol diwakili sebagai NULL atau rentetan kosong. Ini boleh dicapai melalui pertanyaan SQL PIVOT dinamik.

Gunakan PIVOT untuk penukaran dinamik

Langkah berikut menggariskan proses mencipta pertanyaan PIVOT dinamik:

  1. Buat jadual sementara: Cipta jadual sementara untuk menyimpan data asal dan tentukan lajur yang diperlukan.
  2. Jana senarai lajur dinamik: Gunakan subkueri untuk mengekstrak kategori berbeza dan menggabungkannya menjadi rentetan yang dipisahkan koma.
  3. Bina pertanyaan PIVOT: Bina pertanyaan PIVOT menggunakan senarai lajur yang dijana sebagai parameter PIVOT. MAX()Fungsi agregat mendapatkan semula nilai maksimum untuk setiap kategori.
  4. Lakukan pertanyaan: Laksanakan pertanyaan PIVOT dinamik untuk menjana hasil yang diubah.
<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>

Keputusan

Jadual yang terhasil akan mengandungi lajur yang mewakili kategori unik, dengan tarikh sebagai baris. Nilai null boleh dikendalikan melalui NULL atau rentetan kosong bergantung pada output yang dikehendaki.

Contoh hasil:

<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?

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan PIVOT SQL Dinamik untuk Transformasi Data dengan NULL atau Pengendalian Rentetan Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn