Heim >Datenbank >MySQL-Tutorial >Wie kann man in T-SQL mehrere Spalten umwandeln, um Daten für die Berichterstellung umzuformen?

Wie kann man in T-SQL mehrere Spalten umwandeln, um Daten für die Berichterstellung umzuformen?

DDD
DDDOriginal
2025-01-05 09:52:43279Durchsuche

How to Pivot Multiple Columns in T-SQL to Reshape Data for Reporting?

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:

  1. 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.

  2. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn