Maison  >  Questions et réponses  >  le corps du texte

Convertir les résultats basés sur les lignes en résultats basés sur les colonnes pour différents groupes d'utilisateurs : Comment réaliser cette « rotation » ?

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 :

userstable

user_id,first_name
1,Alice
2,Bob
3,Eve
4,Mallory

user_groupsTable

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粉937382230P粉937382230203 Il y a quelques jours367

répondre à tous(1)je répondrai

  • P粉239089443

    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 PIVOTCROSSTAB.

    répondre
    0
  • Annulerrépondre