Pindahkan Data dalam Jadual SQL Menggunakan Pernyataan Kes
Dalam SQL, transposing data merujuk kepada menukar set data yang mana baris dan lajur ditukar. Untuk menukar jadual dengan struktur yang serupa dengan yang disediakan:
Id | UserId | FieldName | FieldValue |
---|---|---|---|
1 | 100 | Username | John Doe |
2 | 100 | Password | pass123! |
3 | 102 | Username | Jane |
4 | 102 | Password | $ecret |
5 | 102 | Email Address | [email protected] |
ke dalam bentuk yang diubahsuai:
UserId | Username | Password | Email Address |
---|---|---|---|
100 | John Doe | pass123! | |
102 | Jane | $ecret | [email protected] |
Satu pendekatan ialah menggunakan berbilang pernyataan CASE bersama dengan kumpulan mengikut klausa:
SELECT t.userid MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username, MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password, MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email FROM TABLE t GROUP BY t.userid
Pertanyaan ini mengira nilai maksimum untuk setiap gabungan pengguna dan medan. Penyata CASE mentakrifkan nilai medan yang hendak dikembalikan berdasarkan nilai medan FieldName.
Walau bagaimanapun, kaedah ini memerlukan penentuan penyataan CASE untuk setiap nama medan tertentu. Untuk penyelesaian dinamik, pertimbangkan untuk menggunakan sintaks Penyata Disediakan (SQL dinamik) MySQL untuk menjana pertanyaan.
Atas ialah kandungan terperinci Bagaimana untuk Transpose Data dalam SQL Menggunakan Penyata CASE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!