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!