Maison > Questions et réponses > le corps du texte
J'utilise MySQL 5.7.
Je recherche une requête SQL qui "fait pivoter" certaines données des lignes vers les colonnes. Le formulaire est le suivant :
users
table
user_id,first_name 1,Alice 2,Bob 3,Eve 4,Mallory
user_groups
Table
user_id,group_name 1,Administrator 2,Editor 2,Contributor 3,Viewer
Ayant un nombre limité de groupes, je souhaite produire les résultats suivants :
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
Je ne sais même pas comment appeler cette requête, mais c'est ce que je veux faire. "Oui" et "Non" peuvent être 0 et 1, ou NULL et 1, dans les deux cas.
Des idées ?
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;
Contrairement à certaines autres marques de bases de données SQL, MySQL ne prend en charge aucune syntaxe spéciale pour PIVOT
或 CROSSTAB
.