Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Pivot Baris ke Lajur dalam DB2 Menggunakan SQL Dinamik?

Bagaimana untuk Pivot Baris ke Lajur dalam DB2 Menggunakan SQL Dinamik?

Patricia Arquette
Lepaskan: 2024-12-31 19:35:10
asal
792 orang telah melayarinya

How to Pivot Rows into Columns in DB2 Using Dynamic SQL?

Menukar Baris ke Lajur dalam DB2 Menggunakan Dynamic SQL

Objektifnya adalah untuk memutar data dalam jadual, menukar baris kepada lajur, untuk mendapatkan keluaran yang dikehendaki. Pertimbangkan struktur jadual berikut:

Jadual Sumber

ItemID Item Value
1 Meeting Now
1 Advise Yes
1 NoAdvise No
2 Meeting Never
2 Advise No
2 NoAdvise Null
2 Combine Yes

Output yang Diingini

ItemID Meeting Advise NoAdvise
1 Now Yes No
2 Never No Null

SQL Pertanyaan Menggunakan Subkueri Berkaitan

Satu pendekatan untuk mencapai transformasi ini adalah dengan menggunakan subkueri berkorelasi:

SELECT 
  A.ItemID,
  MAX(CASE WHEN A.Item = 'Meeting'  THEN Value END) AS Meeting,
  MAX(CASE WHEN A.Item = 'Advise'   THEN Value END) AS Advise,
  MAX(CASE WHEN A.Item = 'NoAdvise' THEN Value END) AS NoAdvise
FROM A
GROUP BY A.ItemID
Salin selepas log masuk

Pertanyaan ini melaksanakan berbilang subkueri berkorelasi, satu untuk setiap lajur output yang diingini, untuk mengekstrak nilai yang sepadan bagi setiap baris. Hasilnya kemudian dikumpulkan mengikut lajur ItemID untuk mendapatkan output terpivot.

Pendekatan Alternatif Menggunakan SQL Dinamik

Pilihan lain ialah memanfaatkan SQL dinamik untuk membina jadual pangsi . Pendekatan ini membolehkan lebih fleksibiliti dan boleh disesuaikan untuk menjana lajur output yang diingini:

DECLARE @cols AS NVARCHAR(MAX), @sql AS NVARCHAR(MAX)

SET @cols = ''
SELECT @cols += ',MAX(CASE WHEN Item = ''' + Item + ''' THEN Value END) AS ' + Item
FROM (
  SELECT DISTINCT Item
  FROM A
) AS Items

SET @sql = 'SELECT ItemID, ' + SUBSTRING(@cols, 2) + '
            FROM A
            GROUP BY ItemID'

EXEC (@sql)
Salin selepas log masuk

Pertanyaan ini membina pernyataan SQL secara dinamik berdasarkan nilai yang berbeza dalam lajur Item dan melaksanakannya, menjana output terpivot .

Atas ialah kandungan terperinci Bagaimana untuk Pivot Baris ke Lajur dalam DB2 Menggunakan SQL Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan