Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyahpaut dan Mengubah Data dalam MySQL untuk Mengubah Lajur menjadi Baris?

Bagaimana untuk Menyahpaut dan Mengubah Data dalam MySQL untuk Mengubah Lajur menjadi Baris?

DDD
DDDasal
2025-01-09 15:07:41977semak imbas

How to Unpivot and Pivot Data in MySQL to Transform Columns into Rows?

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!

Kenyataan:
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