Verwenden Sie die CASE WHEN-Anweisung in SQL, um eine Spalten-Pivotierung durchzuführen
Die Pivot-Operation in SQL bezieht sich auf die Umwandlung vertikal angeordneter Spalten in der Datentabelle in horizontal angeordnete Spalten. Dies wird normalerweise mit der CASE WHEN-Anweisung erreicht.
Angenommen, es gibt eine Tabelle mit drei Spalten: Name, Wert und Betrag. Das Ziel besteht darin, die Daten in eine neue Darstellung umzuwandeln: Jede Zeile repräsentiert einen Namen und jede Spalte repräsentiert einen bestimmten Wert in der Val-Spalte, wie zum Beispiel „Val1“ und „Val2“.
Sie haben versucht, eine erste Abfrage mit einer CASE WHEN-Anweisung zu schreiben, aber die Ergebnisse sind nicht ganz korrekt. Insbesondere werden die Zeilen für John und Peter zweimal wiederholt, wobei eine Zeile den mit val = 1 verknüpften Betragswert und die andere Zeile den mit val = 2 verknüpften Betragswert enthält.
Um dieses Problem zu lösen, können wir die Aggregatfunktion SUM() in Verbindung mit der CASE WHEN-Anweisung verwenden. Indem wir die mit jedem Val-Wert verbundenen Beträge summieren, gruppieren wir effektiv die Zeilen für jeden Namen und führen die Werte in einer einzigen Spalte zusammen.
Die folgende modifizierte Abfrage liefert die gewünschten Ergebnisse:
<code class="language-sql">SELECT name, SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1, SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2 FROM bank GROUP BY name</code>
Diese Abfrage summiert die Menge jedes Val-Werts in jeder Namensgruppe und erhält die folgende Ausgabe:
name | amountVal1 | amountVal2 |
---|---|---|
John | 2000 | 1888 |
Peter | 1999 | 1854 |
Das obige ist der detaillierte Inhalt vonWie kann ich eine SQL-Tabelle mithilfe von CASE WHEN Pivotieren, um doppelte Zeilen zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!