Rumah > pangkalan data > tutorial mysql > Bagaimana untuk memaparkan baris MySQL ke dalam bilangan lajur yang dinamik?

Bagaimana untuk memaparkan baris MySQL ke dalam bilangan lajur yang dinamik?

Patricia Arquette
Lepaskan: 2025-01-25 13:17:10
asal
1033 orang telah melayarinya

How to Pivot MySQL Rows into a Dynamic Number of Columns?

Penukaran baris ke lajur MySQL: pelaksanaan nombor lajur dinamik

Dalam MySQL, anda boleh menukar baris menjadi lajur dengan cekap walaupun bilangan lajur tidak diketahui, dengan menggabungkan fungsi agregat dan pertanyaan dinamik.

Pertanyaan pangsi menggunakan pernyataan CASE

Untuk memutar jadual yang disebut dalam soalan, gunakan fungsi COUNT() dengan pernyataan CASE:

SELECT pt.partner_name,
  COUNT(CASE WHEN pd.product_name = 'Product A' THEN 1 END) AS ProductA,
  COUNT(CASE WHEN pd.product_name = 'Product B' THEN 1 END) AS ProductB,
  COUNT(CASE WHEN pd.product_name = 'Product C' THEN 1 END) AS ProductC,
  COUNT(CASE WHEN pd.product_name = 'Product D' THEN 1 END) AS ProductD,
  COUNT(CASE WHEN pd.product_name = 'Product E' THEN 1 END) AS ProductE
FROM partners pt
LEFT JOIN sales s ON pt.part_id = s.partner_id
LEFT JOIN products pd ON s.product_id = pd.prod_id
GROUP BY pt.partner_name;
Salin selepas log masuk

Pangsi Dinamik menggunakan pernyataan yang disediakan

Untuk menjana pertanyaan pangsi secara dinamik berdasarkan bilangan produk, anda boleh menggunakan pernyataan yang disediakan:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'COUNT(CASE WHEN Product_Name = ''',
      Product_Name,
      ''' THEN 1 END) AS ',
      REPLACE(Product_Name, ' ', '')
    )
  ) INTO @sql
FROM products;

SET @sql = CONCAT('SELECT pt.partner_name, ', @sql, ' FROM partners pt
LEFT JOIN sales s ON pt.part_id = s.partner_id
LEFT JOIN products pd ON s.product_id = pd.prod_id
GROUP BY pt.partner_name');

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

Pertanyaan ini membina pernyataan SQL secara dinamik berdasarkan jadual produk, memastikan bilangan lajur dalam hasil carian sepadan dengan bilangan produk.

Respons yang disemak ini mengekalkan imej dan memberikan penulisan semula kandungan teknikal yang lebih ringkas dan semula jadi. Perubahan utama ialah frasa dan struktur ayat yang lebih baik untuk kebolehbacaan yang lebih baik sambil mengekalkan makna asal.

Atas ialah kandungan terperinci Bagaimana untuk memaparkan baris MySQL ke dalam bilangan lajur yang dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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