Tukar hasil berdasarkan baris kepada hasil berdasarkan lajur untuk kumpulan pengguna yang berbeza: Bagaimana untuk mencapai "putaran" ini?
P粉937382230
P粉937382230 2024-03-29 13:22:26
0
1
449

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_groupsMeja

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粉937382230
P粉937382230

membalas semua(1)
P粉239089443
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 PIVOTCROSSTAB.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan