Pivotieren von Daten mithilfe von zwei Spalten
Diese Frage befasst sich mit der Notwendigkeit, Daten aus einem Format zu plotten, in dem jede Zeile einen Benutzer und die entsprechende Organisation darstellt und Position in einem Format, in dem jede Zeile einen Benutzer und seine Organisationen und Positionen enthält, gruppiert nach Sprache.
Das bereitgestellte Beispiel zeigt, dass die Originaldaten in einer Tabelle gespeichert sind, in der Jede Zeile enthält eine Benutzer-ID, Organisation, Position und Sprache. Die gewünschte Ausgabe besteht darin, eine Tabelle zu haben, in der jede Zeile eine Benutzer-ID, ihre Organisation und Position für jede Sprache enthält.
Um dies zu erreichen, kann eine Pivot-Abfrage verwendet werden, um die Daten zu transformieren. Die vom Benutzer bereitgestellte Abfrage ist ein guter Ausgangspunkt, erfordert jedoch zusätzliche Änderungen, um die gewünschte Ausgabe zu erzielen.
Die folgende geänderte Abfrage sollte funktionieren:
SELECT user_id, MAX(CASE WHEN lang = 'EN' THEN org END) AS org_en, MAX(CASE WHEN lang = 'EN' THEN position END) AS position_en, MAX(CASE WHEN lang = 'FI' THEN org END) AS org_fi, MAX(CASE WHEN lang = 'FI' THEN position END) AS position_fi, MAX(CASE WHEN lang = 'SV' THEN org END) AS org_sv, MAX(CASE WHEN lang = 'SV' THEN position END) AS position_sv FROM source GROUP BY user_id;
Diese Abfrage verwendet den CASE Anweisung, um die Spalte „lang“ mit den gewünschten Sprachen zu vergleichen und die entsprechende Organisation oder Position zurückzugeben, wenn die Bedingung erfüllt ist. Anschließend wird die Funktion MAX() verwendet, um die Ergebnisse für jede Benutzer-ID zu aggregieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Benutzerdaten mithilfe von zwei Spalten (Organisation und Position) nach Sprache sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!