Dynamischer SQL Server PIVOT für dynamische Spalten
Sie haben einen Datensatz mit mehreren Spalten („Name1“ und „Name2“) und einem Wert Spalte ('Wert'). Sie möchten diese Daten in ein Pivot-Format umwandeln, in dem „Name1“ zu den Spaltenüberschriften wird und die Werte nach „Name2“ aggregiert werden.
Lösung mit dynamischem SQL (SQL Server 2005 oder höher)
Da SQL Server 2005 dynamisches SQL ermöglicht, können Sie dieses Problem lösen, indem Sie die PIVOT-Abfrage dynamisch zusammenstellen. Hier ist der Code:
DECLARE @cols VARCHAR(1000) DECLARE @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot' EXECUTE ( @sqlquery )
Diese Abfrage funktioniert dynamisch, unabhängig davon, wie viele eindeutige „Name1“-Werte Sie haben. Die gesammelten „Name1“-Werte werden der Variablen @cols zugewiesen, die dann zum dynamischen Erstellen der PIVOT-Klausel in der @sqlquery-Variablen verwendet wird. Die letzte Abfrage wird dann ausgeführt und erzeugt die gewünschte Ausgabe.
Zusätzliche Ressourcen:
Das obige ist der detaillierte Inhalt vonWie können Daten in SQL Server mit dynamischen Spalten dynamisch geschwenkt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!