Pivotieren in DB2
Bei dieser Frage geht es um die Transponierung von Zeilen in Spalten in einer DB2-Tabelle. Die bereitgestellten Daten sind mit den Spalten „ItemID“, „Item“ und „Value“ strukturiert. Das Ziel besteht darin, diese Daten in ein transponiertes Format umzuwandeln, in dem die Werte für „Meeting“, „Advise“ und „NoAdvise“ als Spalten angeordnet sind, wobei die ItemID als Zeilenidentifikator dient.
Ein Ansatz zur Ausführung dieses Pivots besteht darin: Verwenden Sie eine GROUP BY-Klausel zusammen mit mehreren MAX()-Ausdrücken. Durch die Verwendung von MAX() und die Angabe der Kriterien für jeden Elementtyp innerhalb der CASE-Anweisung können die entsprechenden Werte abgerufen werden. Zum Beispiel:
SELECT ItemID, MAX(CASE WHEN Item = 'Meeting' THEN Value END) AS Meeting, MAX(CASE WHEN Item = 'Advise' THEN Value END) AS Advise, MAX(CASE WHEN Item = 'NoAdvise' THEN Value END) AS NoAdvise FROM table_name GROUP BY ItemID
Diese Abfrage generiert das gewünschte transponierte Format, wobei ItemID als Primärschlüssel dient und Meeting, Advise und NoAdvise die Spaltenüberschriften werden. Die GROUP BY-Klausel stellt sicher, dass die Daten nach ItemID gruppiert werden und für jedes Element eine eigene Zeile bereitgestellt wird.
Alternativ kann das gleiche Ergebnis durch die Verwendung mehrerer korrelierter Unterabfragen erzielt werden, wie in der derzeit akzeptierten Antwort in diesem Forum vorgeschlagen . Es ist jedoch zu beachten, dass es beim Unterabfrage-Ansatz im Vergleich zur effizienteren GROUP BY-Lösung zu Leistungsproblemen kommen kann, insbesondere bei größeren Datensätzen.
Das obige ist der detaillierte Inhalt vonWie kann ich in DB2 mithilfe von GROUP BY Zeilen in Spalten umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!