Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mensimulasikan Jadual Pangsi dalam MySQL Menggunakan UNION ALL dan Aggregation?

Bagaimana untuk Mensimulasikan Jadual Pangsi dalam MySQL Menggunakan UNION ALL dan Aggregation?

Mary-Kate Olsen
Lepaskan: 2025-01-09 15:16:42
asal
141 orang telah melayarinya

How to Simulate Pivot Tables in MySQL Using UNION ALL and Aggregation?

Mensimulasikan jadual pangsi dalam MySQL: menggunakan UNION ALL dan fungsi agregat

Jadual pangsi memainkan peranan penting dalam analisis data dan penjanaan laporan, menukar data kolumnar kepada data berasaskan baris untuk mencapai visualisasi yang lebih padat dan berwawasan. Walaupun MySQL tidak menyediakan fungsi UNPIVOT dan PIVOT secara langsung, kami boleh menggabungkan fungsi UNION ALL dan agregat dengan bijak untuk mencapai fungsi yang serupa.

Data Nyahpaut

Langkah pertama dalam jadual pangsi ialah mengembangkan data atau menukarnya kepada format yang lebih fleksibel. Ini melibatkan mencipta berbilang baris untuk setiap lajur data, di mana setiap baris mewakili lajur dan nilai yang sepadan. Kita boleh menggunakan operator UNION ALL untuk mencapai ini:

<code class="language-sql">SELECT id, month, col1 AS value, 'col1' AS descrip
FROM yourTable
UNION ALL
SELECT id, month, col2 AS value, 'col2' AS descrip
FROM yourTable
UNION ALL
SELECT id, month, col3 AS value, 'col3' AS descrip
FROM yourTable
UNION ALL
SELECT id, month, col4 AS value, 'col4' AS descrip
FROM yourTable;</code>
Salin selepas log masuk

Pertanyaan ini akan menjana hasil berikut:

id month value descrip
101 Jan A col1
102 Feb C col1
101 Jan B col2
102 Feb A col2
101 Jan NULL col3
102 Feb G col3
101 Jan B col4
102 Feb E col4

Kembangkan Pemisahan Data

Setelah data dikembangkan, kami boleh memutarkannya menggunakan fungsi agregat dan CASE pernyataan untuk mencipta format laporan yang diingini:

<code class="language-sql">SELECT descrip,
  MAX(CASE WHEN month = 'Jan' THEN value ELSE 0 END) AS jan,
  MAX(CASE WHEN month = 'Feb' THEN value ELSE 0 END) AS feb
FROM (
    SELECT id, month, col1 AS value, 'col1' AS descrip
    FROM yourTable
    UNION ALL
    SELECT id, month, col2 AS value, 'col2' AS descrip
    FROM yourTable
    UNION ALL
    SELECT id, month, col3 AS value, 'col3' AS descrip
    FROM yourTable
    UNION ALL
    SELECT id, month, col4 AS value, 'col4' AS descrip
    FROM yourTable
) AS src
GROUP BY descrip;</code>
Salin selepas log masuk

Pertanyaan di atas akan menghasilkan keputusan berikut:

descrip jan feb
col1 A C
col2 B A
col3 0 G
col4 B E

Hasil ini sepadan dengan format laporan yang diperlukan. Melalui teknologi ini, kami boleh melaksanakan fungsi jadual pangsi dengan berkesan dalam MySQL dan dengan mudah menukar data berasaskan lajur kepada laporan berasaskan baris, membolehkan analisis dan pelaporan yang lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Jadual Pangsi dalam MySQL Menggunakan UNION ALL dan Aggregation?. 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