Heim >Datenbank >MySQL-Tutorial >Wie kann man in T-SQL mehrere Spalten umwandeln, um Daten für die Berichterstellung umzuformen?
Pivotieren mehrerer Spalten in TSQL
Bei der Arbeit mit relationalen Datenbanken ist es häufig erforderlich, Daten für Berichtszwecke umzuformen. Pivoting ist eine Technik, mit der Daten von einer zeilenorientierten Struktur in eine spaltenorientierte Struktur umgewandelt werden können. In diesem Artikel wird gezeigt, wie Sie mehrere Spalten in einer Tabelle drehen und dabei alle zugehörigen Beschriftungen beibehalten.
Herausforderung
Betrachten Sie die folgende Tabelle mit dem Namen GRAND_TOTALS:
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 |
Das Ziel besteht darin, die Spalten RESULT, SCORE und NOTE zu rotieren, sodass eine Tabelle mit Folgendem entsteht Format:
RATIO | Current Ratio | Gearing Ratio | Performance Ratio | TOTAL |
---|---|---|---|---|
Result | 1.294 | 0.3384 | 0.0427 | NULL |
Score | 60 | 70 | 50 | 180 |
Grade | Good | Good | Satisfactory | Good |
Lösung
Um mehrere Spalten effektiv zu Pivotieren, beachten Sie die folgenden Schritte:
Entpivotieren Sie das Ergebnis, die Punktzahl und die Note Spalten:
Beim Aufheben der Pivotierung werden mehrere Spalten in eine einzige Spalte umgewandelt, wobei die ursprüngliche Spalte im Auge behalten wird Namen. Dies kann mit der UNPIVOT-Klausel erreicht werden. Die folgende Syntax zeigt, wie die Spalten entpivotiert werden:
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)
Diese Abfrage erstellt eine neue Tabelle mit den Spalten RATIO, COL und VALUE, wobei COL den ursprünglichen Spaltennamen (Ergebnis, Punktzahl oder Note) darstellt ) und VALUE enthält die entsprechenden Werte.
Wenden Sie den PIVOT an Funktion:
Sobald die Daten entpivotiert sind, kann die PIVOT-Funktion angewendet werden, um die Daten in das gewünschte Format umzuwandeln. Die Syntax für das Pivotieren lautet wie folgt:
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;
In dieser Abfrage gruppiert die PIVOT-Funktion die Zeilen nach der RATIO-Spalte und dreht die Daten unter Verwendung der COL-Werte als Spaltenüberschriften. Die MAX-Aggregatfunktion wird verwendet, um den neuesten Wert für jede Zeile abzurufen.
Ergebnis
Durch Ausführen der obigen Abfrage wird die gewünschte Pivot-Tabelle erstellt :
RATIO | Current Ratio | Gearing Ratio | Performance Ratio | TOTAL |
---|---|---|---|---|
grade | Good | Good | Satisfactory | Good |
result | 1.29400 | 0.33840 | 0.04270 | NULL |
score | 60.00000 | 70.00000 | 50.00000 | 180.00000 |
Diese Tabelle behält alle notwendigen Beschriftungen und dreht die gewünschten Spalten erfolgreich.
Das obige ist der detaillierte Inhalt vonWie kann man in T-SQL mehrere Spalten umwandeln, um Daten für die Berichterstellung umzuformen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!