Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyahpaut dan Mengubah Data dalam MySQL untuk Mengubah Lajur menjadi Baris?
Pivot dan pivot data MySQL: tukar lajur kepada baris
Andaikan anda mempunyai jadual dengan berbilang lajur (col1, col2, col3, dll.) dan ingin menukarnya kepada format jadual pangsi, mempersembahkan data dalam unit baris dan bukannya lajur.
Untuk mencapai ini dalam MySQL, mula-mula gunakan pertanyaan UNION ALL
untuk memutar data. Proses ini mencipta berbilang baris daripada nilai lajur asal:
<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>
UNION ALL
Hasil pertanyaan:
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 |
Seterusnya, bungkus pertanyaan UNION ALL
dalam subkueri untuk memutar data. Gunakan penyataan fungsi agregat GROUP BY
dan CASE
untuk menukar struktur perspektif tidak berpivot kepada format perspektif 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>
Hasil pertanyaan pangsi:
DESCRIP | JAN | FEB |
---|---|---|
col1 | A | C |
col2 | B | A |
col3 | 0 | G |
col4 | B | E |
Proses ini menukar struktur jadual daripada lajur kepada baris dengan berkesan, membolehkan anda mempersembahkan data anda dengan cara yang lebih ringkas dan jelas.
Atas ialah kandungan terperinci Bagaimana untuk Menyahpaut dan Mengubah Data dalam MySQL untuk Mengubah Lajur menjadi Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!