Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine SQL-Tabelle mithilfe von CASE WHEN Pivotieren, um doppelte Zeilen zu vermeiden?

Wie kann ich eine SQL-Tabelle mithilfe von CASE WHEN Pivotieren, um doppelte Zeilen zu vermeiden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-11 15:47:431013Durchsuche

How Can I Pivot a SQL Table Using CASE WHEN to Avoid Duplicate Rows?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn