Heim  >  Fragen und Antworten  >  Hauptteil

Konvertieren Sie zeilenbasierte Ergebnisse in spaltenbasierte Ergebnisse für verschiedene Benutzergruppen: Wie erreicht man diese „Rotation“?

Ich verwende MySQL 5.7.

Ich suche nach einer SQL-Abfrage, die einige Daten von Zeilen in Spalten „rotiert“. Das Formular lautet wie folgt:

users Tisch

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

user_groupsTisch

user_id,group_name
1,Administrator
2,Editor
2,Contributor
3,Viewer

Mit einer begrenzten Anzahl an Gruppen möchte ich die folgenden Ergebnisse erzielen:

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

Ich bin mir nicht einmal sicher, wie ich diese Abfrage nennen soll, aber genau das möchte ich tun. „Ja“ und „Nein“ können in beiden Fällen 0 und 1 oder NULL und 1 sein.

Irgendwelche Ideen?

P粉937382230P粉937382230203 Tage vor368

Antworte allen(1)Ich werde antworten

  • 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;

    与其他一些品牌的 SQL 数据库不同,MySQL 不支持 PIVOTCROSSTAB 的任何特殊语法。

    Antwort
    0
  • StornierenAntwort