Pivotieren mehrerer Spalten in TSQL
Bei der Arbeit mit einer relationalen Datenbank ist es oft notwendig, Daten zu transformieren, um sie einfacher analysieren zu können berichten über. Eine Möglichkeit, dies zu tun, ist das Pivotieren der Daten, was das Rotieren von Zeilen in Spalten und umgekehrt beinhaltet.
Betrachten Sie die folgende Tabelle, die Finanzkennzahlen, Ergebnisse, Bewertungen und Noten enthält:
RATIO | RESULT | SCORE | GRADE |
---|---|---|---|
Current Ratio | 1.294 | 60 | Good |
Gearing Ratio | 0.3384 | 70 | Good |
Performance Ratio | 0.0427 | 50 | Satisfactory |
TOTAL | NULL | 180 | Good |
Um diese Daten zu Pivotieren und alle Beschriftungen beizubehalten, müssen wir die Pivotierung der Ergebnis-, Punkte- und Notenspalten aufheben, sodass jede Zeile in jeder Spalte einen Wert hat. Dies kann mit der UNPIVOT-Funktion oder CROSS APPLY erreicht werden, je nachdem, welche Version von SQL Server Sie verwenden.
Sobald die Pivotierung der Daten aufgehoben ist, können wir die PIVOT-Funktion anwenden, um die Zeilen in Spalten zu drehen. Die Syntax ähnelt der folgenden:
SELECT ratio = col, [current ratio], [gearing ratio], [performance ratio], total FROM ( SELECT ratio, col, value FROM GRAND_TOTALS CROSS APPLY ( SELECT 'result', CAST(result AS VARCHAR(10)) UNION ALL SELECT 'score', CAST(score AS VARCHAR(10)) UNION ALL SELECT 'grade', grade ) c(col, value) ) d PIVOT ( MAX(value) FOR ratio IN ([current ratio], [gearing ratio], [performance ratio], total) ) piv;
Die resultierende Ausgabe ist eine Tabelle mit einer Zeile für jedes Verhältnis und Spalten für das aktuelle Verhältnis, das Übersetzungsverhältnis, das Leistungsverhältnis, die Gesamtzahl, die Punktzahl usw Note:
RATIO | CURRENT RATIO | GEARING RATIO | PERFORMANCE RATIO | TOTAL | SCORE | GRADE |
---|---|---|---|---|---|---|
grade | Good | Good | Satisfactory | Good | NULL | NULL |
result | 1.29400 | 0.33840 | 0.04270 | NULL | NULL | NULL |
score | 60.00000 | 70.00000 | 50.00000 | 180.00000 | NULL | NULL |
Das obige ist der detaillierte Inhalt vonWie kann man mehrere Spalten in T-SQL umwandeln, um Finanzkennzahlendaten zu transformieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!