Verwendung von CASE WHEN für das Pivotieren von SQL-Spalten
Müssen Sie Ihre SQL-Daten von Zeilen in Spalten umwandeln? Die CASE WHEN
-Anweisung bietet eine unkomplizierte Lösung für die Pivotierung, insbesondere wenn es sich um Tabellen handelt, die doppelte Werte in einer Spalte enthalten, die aggregiert werden müssen.
Lassen Sie es uns anhand eines Beispiels veranschaulichen. Stellen Sie sich diese Tabelle vor:
<code class="language-sql">Bank: name val amount John 1 2000 Peter 1 1999 Peter 2 1854 John 2 1888</code>
Unser Ziel: dies in eine Tabelle umstrukturieren, in der eindeutige „val“-Werte zu Spalten werden und jeder eindeutige „name“ eine Zeile ist. Die gewünschte Ausgabe:
<code class="language-sql">name amountVal1 amountVal2 John 2000 1888 Peter 1999 1854 </code>
So erreichen Sie diesen Drehpunkt mit SUM()
und CASE WHEN
:
<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 verwendet SUM()
, um amount
-Werte für jede eindeutige name
- und val
-Kombination zu aggregieren. Die CASE WHEN
-Anweisung prüft, ob val
1 oder 2 ist, und weist das entsprechende amount
entsprechend zu. GROUP BY name
stellt eine Zeile pro eindeutigem Namen sicher. Das Ergebnis? Die Spalten amountVal1
und amountVal2
stellen die geschwenkten Daten übersichtlich dar. Diese Methode ist für eine bekannte, begrenzte Anzahl von val
-Werten wirksam. Erwägen Sie für eine dynamische Anzahl von Werten die Verwendung von PIVOT oder anderen fortgeschritteneren Techniken.
Das obige ist der detaillierte Inhalt vonWie kann ich eine SQL-Spalte mithilfe von CASE WHEN drehen, um Zeilendaten in Spalten umzuwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!