SQL-Tabellentransposition: Anwendung der UNPIVOT- und PIVOT-Funktionen
Das Transponieren einer Tabelle in SQL kann mithilfe einer Kombination aus UNPIVOT- und PIVOT-Funktionen erreicht werden. Die UNPIVOT-Funktion wandelt Spalten in Zeilen um, während die PIVOT-Funktion Zeilen in Spalten umwandelt.
UNPIVOT-Daten
Die UNPIVOT-Funktion wird verwendet, um mehrere Spalten in eine einzelne Spalte umzuwandeln. Im Beispiel müssen die Spalten A und B erweitert werden. Die folgende Abfrage veranschaulicht diesen Vorgang:
<code class="language-sql">select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv;</code>
Diese Abfrage erstellt eine neue Tabelle mit drei Spalten: Tag, Spalte und Wert. Die Spalte „col“ enthält den Spaltennamen (A oder B) und die Spalte „value“ enthält den entsprechenden Wert aus der erweiterten Spalte.
PIVOT-Daten
Die PIVOT-Funktion wird verwendet, um Zeilen in Spalten umzuwandeln. In diesem Beispiel müssen die Tageswerte (Mo, Di, Wed, Do, Fr) in Spalten umgewandelt werden:
<code class="language-sql">select * from ( select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv ) src pivot ( max(value) for day in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
Die letzte Abfrage erzeugt die gewünschte Ausgabe:
<code>Value | Mon | Tue | Wed | Thu | Fri -------|-----|-----|-----|-----|----- A | 1 | 3 | 5 | 7 | 9 B | 2 | 4 | 6 | 8 | 0</code>
Lösung auf Ihre Anfrage anwenden
Um diese Lösung auf Ihre spezifische Anfrage anzuwenden, können Sie sie wie folgt ändern:
<code class="language-sql">select * from ( select LEFT(datename(dw,datetime),3) as DateWeek, col, value from DataTable cross apply ( values ('A', ACalls), ('B', BCalls) ) c (col, value) ) src pivot ( sum(value) for dateweek in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
Diese Abfrage wandelt die Daten in Ihrer DataTable in das gewünschte Format um.
Das obige ist der detaillierte Inhalt vonWie transponiere ich Tabellen in SQL mit UNPIVOT und PIVOT?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!