Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Pivot Baris ke Lajur dalam MySQL Menggunakan CASE dan MAX()?

Bagaimana untuk Pivot Baris ke Lajur dalam MySQL Menggunakan CASE dan MAX()?

Barbara Streisand
Barbara Streisandasal
2024-12-08 16:58:10654semak imbas

How to Pivot Rows into Columns in MySQL Using CASE and MAX()?

Menukar Baris kepada Lajur dalam MySQL

Pertimbangkan pangkalan data dengan jadual berikut:

CREATE TABLE mytable (
  ID INTEGER PRIMARY KEY,
  Type INTEGER,
  Email VARCHAR(255),
  Degignation VARCHAR(255)
);

Matlamatnya ialah untuk mengubah data daripada baris kepada lajur, dengan lajur Jenis menjadi pengepala lajur dan lajur terakhir menjadi nilai baris. Output yang dijangkakan akan kelihatan seperti ini:

ID                202         234                     239        Email
1000000000   Entrepreneur  Engineering,Development    CTO       [email protected]

Untuk mencapai transformasi ini, MySQL menyediakan pertanyaan yang agak kompleks:

SELECT ID, 
 MAX(CASE Type WHEN 202 THEN Degignation END) AS `202`,
 MAX(CASE Type WHEN 234 THEN Degignation END) AS `234`,
 MAX(CASE Type WHEN 239 THEN Degignation END) AS `239`,
 Email
FROM mytable
GROUP BY ID, Email;

Pertanyaan ini menggunakan ungkapan CASE untuk menyemak lajur Jenis setiap baris dan tetapkan nilai Degignation yang sepadan kepada lajur yang sesuai dalam set hasil. Fungsi MAX() digunakan untuk memastikan bahawa hanya nilai terkini (atau maksimum) dikembalikan untuk setiap lajur Jenis.

Adalah penting untuk ambil perhatian bahawa pertanyaan memerlukan set pengepala lajur yang tetap, bermakna yang berbeza Nilai jenis mesti diketahui terlebih dahulu. SQL tidak menyokong penambahan lajur dinamik berdasarkan nilai data yang ditemui semasa pelaksanaan pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk Pivot Baris ke Lajur dalam MySQL Menggunakan CASE dan MAX()?. 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