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>
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>
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!