Heim > Datenbank > MySQL-Tutorial > Wie kann der PIVOT-Operator von SQL Server Daten aus mehreren Spalten in ein zeilenorientiertes Format umwandeln?

Wie kann der PIVOT-Operator von SQL Server Daten aus mehreren Spalten in ein zeilenorientiertes Format umwandeln?

Mary-Kate Olsen
Freigeben: 2024-12-25 18:36:13
Original
614 Leute haben es durchsucht

How can SQL Server's PIVOT operator reshape data from multiple columns into a row-oriented format?

Enthüllung der Geheimnisse von PIVOT in SQL Server

Oft stoßen wir auf Datensätze, deren Daten so strukturiert sind, dass sie schwierig zu analysieren sind und in einem aussagekräftigen Format präsentieren. Ein solches Szenario entsteht, wenn Daten in mehreren Spalten organisiert sind, von denen jede einen anderen Wert für eine bestimmte Kategorie darstellt. Um diese Datensätze in eine Tabelle mit Kategorien als Spalten und Werten als Zeilen umzuwandeln, können wir den PIVOT-Operator in SQL Server verwenden.

Betrachten wir ein Szenario, in dem wir eine Tabelle namens „mytable“ mit den Spalten „Name1“ haben. , „Name2“ und „Wert“. Die Daten in dieser Tabelle stellen verschiedene Werte („P1“, „P2“, „P3“, „P4“) dar, die mit unterschiedlichen Namen („A“ und „B“) verbunden sind:

Name1  Name2  Value
A      P1     1
A      P2     1
A      P3     2
B      P1     3
B      P2     1
B      P4     1
Nach dem Login kopieren

Unser Ziel besteht darin, diese Daten in das folgende Format umzustrukturieren:

       A     B
P1     1     4
P2     1     1
P3     2     NULL
P4     NULL  1
Nach dem Login kopieren

In SQL Server 2005 können wir die dynamische Abfragekonstruktion nutzen, um diese Transformation mithilfe von PIVOT durchzuführen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Stellen Sie eine durch Kommas getrennte Zeichenfolge aus Spaltennamen zusammen: Führen Sie die folgende Abfrage aus, um eine Zeichenfolge zu erstellen, die alle eindeutigen „Name1“ enthält " Durch Kommas getrennte Werte:

    DECLARE @cols VARCHAR(1000)
    SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                         FROM myTable FOR XML PATH('') ), 1, 1, '') 
    Nach dem Login kopieren
  2. Konstruieren Sie die Dynamik SQL-Abfrage: Erstellen Sie eine Variable mit dem Namen @sqlquery und weisen Sie ihr die folgende Abfragevorlage zu:

    DECLARE @sqlquery VARCHAR(2000)
    SET @sqlquery = 'SELECT * FROM
       (SELECT Name2, Name1, Value
        FROM myTable ) base
        PIVOT (Sum(Value) FOR [Name1]
        IN (' + @cols + ')) AS finalpivot'
    Nach dem Login kopieren
  3. Führen Sie die dynamische Abfrage aus: Führen Sie die @sqlquery-Variable mit EXECEUTE aus (@sqlquery), um die Pivot-Tabelle zu generieren.

Dieser Ansatz dynamisch Konstruiert die PIVOT-Klausel basierend auf den unterschiedlichen Werten in der Spalte „Name1“. Die PIVOT-Funktion summiert die Spalte „Wert“ für jede Kategorie „Name1“ und das Ergebnis ist eine Tabelle, in der die Werte „Name2“ als Zeilenüberschriften dienen und die Kategorien „Name1“ die Spaltenüberschriften bilden.

Im Allgemeinen Grundsätzlich kann PIVOT immer dann verwendet werden, wenn Sie Daten von einer spaltenorientierten Struktur in eine zeilenorientierte Struktur umwandeln müssen. Diese Technik kann Datenanalyse- und Präsentationsaufgaben erheblich vereinfachen.

Das obige ist der detaillierte Inhalt vonWie kann der PIVOT-Operator von SQL Server Daten aus mehreren Spalten in ein zeilenorientiertes Format umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage