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

Bagaimana untuk Pivot Data dalam MySQL: Mengubah Lajur menjadi Baris?

Susan Sarandon
Lepaskan: 2025-01-09 15:12:39
asal
456 orang telah melayarinya

How to Pivot Data in MySQL: Transforming Columns into Rows?

MySQL Pivot: Tukar lajur kepada baris

Dalam MySQL, jadual pangsi perlu dijana dengan menukar lajur kepada baris untuk persembahan data yang lebih baik. Sebagai contoh, pertimbangkan jadual yang mengandungi berbilang lajur (contohnya, col1, col2) yang mewakili data untuk bulan yang berbeza (contohnya, Januari, Februari).

Keperluan: Buat laporan yang membentangkan data dalam format jadual pangsi, dengan setiap baris mewakili lajur dalam jadual asal dan setiap lajur mewakili bulan yang berbeza.

Peluasan data:

MySQL tidak mempunyai fungsi terbina dalam untuk membuka data (menukar lajur kepada baris). Walau bagaimanapun, ini boleh dicapai dengan pertanyaan UNION ALL:

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
Salin selepas log masuk

Keputusan:

Pertanyaan ini menukar data ke dalam format berikut:

IDMONTHVALUEDESCRIP
101JanAcol1
101JanBcol2
101JanNULLcol3
101JanBcol4
102FebCcol1
102FebAcol2
102FebGcol3
102FebEcol4

Pivot:

Setelah data dikembangkan, ia boleh ditukar kepada format jadual pangsi yang diingini menggunakan fungsi agregat. Pertanyaan berikut menggunakan pernyataan CASE untuk mengumpulkan data mengikut setiap lajur (huraian) dan memaparkan nilai untuk Januari dan Februari:

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
) src
GROUP BY descrip
Salin selepas log masuk

Keputusan:

Pertanyaan ini menjana format jadual pangsi yang diperlukan:

DESCRIP JAN FEB
col1 A C
col2 B A
col3 0 G
col4 B E

Atas ialah kandungan terperinci Bagaimana untuk Pivot Data dalam MySQL: Mengubah Lajur menjadi Baris?. 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