SQL Server-Mehrfachlistentransponierung
Tabellentransposition bedeutet, Zeilen in Spalten und Spalten in Zeilen umzuwandeln. Dies ist besonders nützlich, wenn Sie Daten für Analysen oder Präsentationen Pivotieren müssen.
Frage:
Sie möchten eine Tabelle mit mehreren Spalten aus dem folgenden Format umsetzen:
Day | A | B |
---|---|---|
Mon | 1 | 2 |
Tue | 3 | 4 |
Wed | 5 | 6 |
Thu | 7 | 8 |
Fri | 9 | 0 |
In das folgende Format konvertieren:
Value | Mon | Tue | Wed | Thu | Fri |
---|---|---|---|---|---|
A | 1 | 3 | 5 | 7 | 9 |
B | 2 | 4 | 6 | 8 | 0 |
Lösung:
Um mehrere Spalten in SQL zu transponieren, können Sie die Funktionen UNPIVOT und PIVOT zusammen verwenden.
1. UNPIVOT:
Die UNPIVOT-Funktion denormalisiert Daten, indem sie Spalten in Zeilen umwandelt. Dadurch wird eine neue Tabelle mit drei Spalten erstellt: Tag, Spalte und Wert.
<code class="language-sql">select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv</code>
2. PIVOT:
Die PIVOT-Funktion normalisiert dann die Daten neu, indem sie die Tageswerte in Spalten umwandelt. Dadurch wird die transponierte Tabelle erstellt.
<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>
Hinweis:
Bewerben Sie sich auf Ihre Anfrage:
Um Ihre spezifische Abfrage umzusetzen, können Sie den folgenden modifizierten Code verwenden:
<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>
Dadurch wird eine transponierte Tabelle im gewünschten Format generiert.
Das obige ist der detaillierte Inhalt vonWie kann ich eine mehrspaltige Tabelle in SQL transponieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!