Rumah > Soal Jawab > teks badan
Saya menjalankan MySQL 5.7.
Saya sedang mencari pertanyaan SQL yang "memutar" beberapa data daripada baris ke lajur. Borangnya adalah seperti berikut:
users
meja
user_id,first_name 1,Alice 2,Bob 3,Eve 4,Mallory
user_groups
Meja
user_id,group_name 1,Administrator 2,Editor 2,Contributor 3,Viewer
Mempunyai kumpulan kumpulan yang terhad, saya ingin menghasilkan keputusan berikut:
user_id,first_name,Administrator,Editor,Contributor,Viewer 1,Alice,Yes,No,No,No 2,Bob,No,Yes,Yes,No 3,Eve,No,No,No,Yes 4,Mallory,No,No,No,No
Saya pun tidak pasti apa yang patut saya panggil pertanyaan ini, tetapi itulah yang saya mahu lakukan. "Ya" dan "Tidak" boleh menjadi 0 dan 1, atau NULL dan 1, sama ada cara.
Ada idea?
P粉2390894432024-03-30 00:13:57
SELECT u.user_id, MAX(CASE group_name WHEN 'Administrator' THEN 'Yes' ELSE 'No' END) AS Administrator, MAX(CASE group_name WHEN 'Editor' THEN 'Yes' ELSE 'No' END) AS Editor, MAX(CASE group_name WHEN 'Contributor' THEN 'Yes' ELSE 'No' END) AS Contributor, MAX(CASE group_name WHEN 'Viewer' THEN 'Yes' ELSE 'No' END) AS Viewer FROM users AS u LEFT OUTER JOIN user_groups AS g USING (user_id) GROUP BY u.user_id;
Tidak seperti beberapa jenama pangkalan data SQL yang lain, MySQL tidak menyokong sebarang sintaks khas untuk PIVOT
或 CROSSTAB
.