Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Pivoting Data Dinamik dalam MySQL?

Bagaimana untuk Melaksanakan Pivoting Data Dinamik dalam MySQL?

DDD
Lepaskan: 2025-01-06 07:35:43
asal
897 orang telah melayarinya

How to Perform Dynamic Data Pivoting in MySQL?

Pengisian dinamik data dalam MySQL

Pengisian data ialah operasi biasa dalam transformasi data, yang melibatkan pembentukan semula data daripada reka letak menegak kepada reka letak mendatar. Dalam SQL, ini boleh dicapai menggunakan teknik yang berbeza seperti fungsi UNPIVOT atau PIVOT. Walau bagaimanapun, MySQL tidak mempunyai fungsi PIVOT asli, menjadikannya perlu untuk meneroka kaedah alternatif.

Satu pendekatan untuk pangsi dinamik dalam MySQL ialah membina pertanyaan secara dinamik menggunakan fungsi agregat dan pernyataan CASE. Kaedah ini melibatkan membina pernyataan SQL secara dinamik berdasarkan dimensi dan nilai yang diperlukan dalam output.

Contoh berikut menunjukkan cara melaksanakan pivoting dinamik menggunakan pernyataan yang disediakan:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when part_type = ''',
      part_type,
      ''' then part_id end) AS part_',
      part_type, '_id'
    )
  ) INTO @sql
FROM
  parts;
SET @sql = CONCAT('SELECT product_id, ', @sql, ' 
                  FROM parts 
                   GROUP BY product_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Salin selepas log masuk

Dalam pertanyaan ini , kami menjana pernyataan SELECT secara dinamik berdasarkan jenis bahagian yang berbeza, yang merupakan dimensi pangsi. Kami menggunakan pernyataan CASE untuk memperuntukkan part_id kepada lajur pangsi yang sesuai berdasarkan jenis_bahagian. Pernyataan SQL yang dijana kemudiannya dilaksanakan menggunakan pernyataan yang disediakan untuk prestasi yang lebih baik.

Pilihan lain ialah menggunakan versi statik pertanyaan jika anda mengetahui bilangan lajur terhad yang diperlukan dalam output:

select product_id,
  max(case when part_type ='A' then part_id end) as Part_A_Id,
  max(case when part_type ='B' then part_id end) as Part_B_Id
from parts
group by product_id
Salin selepas log masuk

Dengan memanfaatkan teknik ini, anda boleh melaksanakan pivoting dinamik dalam MySQL untuk membentuk semula data anda dengan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pivoting Data Dinamik dalam MySQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan