Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine vollständige Tabelle in MS SQL mit UNPIVOT und PIVOT transponieren?
MS SQL Server: Vollständige Tabellentransposition mit UNPIVOT und PIVOT
Das Transponieren einer Tabelle mit mehreren Spalten in MS SQL Server erfordert einen kombinierten Ansatz unter Verwendung der Funktionen UNPIVOT
und PIVOT
. UNPIVOT
formt mehrere Spalten in Zeilen um, während PIVOT
Zeilenwerte wieder in Spalten umwandelt.
Schritt-für-Schritt-Anleitung:
Datenentpivotierung:
Dieser Schritt wandelt Ihre Spaltendaten in Zeilen um. Ersetzen Sie yourtable
, A
, B
, value
und col
durch Ihre tatsächlichen Tabellen- und Spaltennamen.
<code class="language-sql">SELECT day, col, value FROM yourtable UNPIVOT ( value FOR col IN (A, B) ) unpiv</code>
Daten-Pivotierung:
Hier werden die Zeilendaten wieder in Spalten umgewandelt. Passen Sie Mon
, Tue
, Wed
, Thu
, Fri
an Ihre spezifischen Spaltennamen an (in diesem Beispiel die Wochentage).
<code class="language-sql">SELECT * FROM (SELECT * FROM ...) src -- Replace ... with the UNPIVOT query from step 1 PIVOT ( MAX(value) FOR day IN (Mon, Tue, Wed, Thu, Fri) ) piv</code>
Integration in bestehende Abfragen:
Um Daten innerhalb einer vorhandenen Abfrage zu transponieren, integrieren Sie die Operationen UNPIVOT
und PIVOT
:
<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>
Beispiel für die Verwendung von PIVOT und CROSS APPLY (SQL Server 2008 und höher):
Dieses Beispiel nutzt CROSS APPLY
für eine prägnantere Lösung.
<code class="language-sql">SELECT day, col, value FROM yourtable CROSS APPLY ( VALUES ('A', ACalls), ('B', BCalls) ) c (col, value) PIVOT ( MAX(value) FOR day IN (Mon, Tue, Wed, Thu, Fri) ) piv</code>
Wichtige Überlegungen:
col
im Ergebnis ohne Pivot werden die ursprünglichen Spaltennamen angezeigt.MAX()
-Funktion kann je nach Ihren Datenanforderungen durch andere Aggregatfunktionen (wie SUM()
, AVG()
usw.) ersetzt werden.Dieser umfassende Leitfaden zeigt, wie man ganze Tabellen in MS SQL Server effektiv transponiert und bietet Flexibilität und Anpassungsfähigkeit für verschiedene Datenmanipulationsszenarien.
Das obige ist der detaillierte Inhalt vonWie kann ich eine vollständige Tabelle in MS SQL mit UNPIVOT und PIVOT transponieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!