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

<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

Keputusan:

Pertanyaan ini menukar data ke dalam format berikut:

ID MONTH VALUE DESCRIP
101 Jan A col1
101 Jan B col2
101 Jan NULL col3
101 Jan B col4
102 Feb C col1
102 Feb A col2
102 Feb G col3
102 Feb E col4

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:

<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
) src
GROUP BY descrip</code>
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!

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