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.
Langkah berikut menggariskan proses mencipta pertanyaan PIVOT dinamik:
MAX()
Fungsi agregat mendapatkan semula nilai maksimum untuk setiap kategori. <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>
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>
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!