Heim >Datenbank >MySQL-Tutorial >Wie kann man Daten im SQL -Server dynamisch mithilfe einer dynamischen Abfrage dynamisch drehen?
Dynamische Pivot-Daten in SQL Server mithilfe dynamischer Abfragen
In diesem Artikel wird erläutert, wie Sie Daten aus Datums-, Kategorie- und Betragsspalten in ein strukturierteres Format konvertieren, das Beträge nach Datum und Kategorie gruppiert.
Zu diesem Zweck können dynamische Pivot-Abfragen verwendet werden. Pivot ist eine Funktion von SQL Server, mit der Sie die Zeilen einer Tabelle in Spalten drehen können. In diesem Fall ist der Drehpunkt die Datumsspalte und die resultierende Spalte ist die Kategorie.
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX);</code>
Um eine dynamische Pivot-Abfrage zu erstellen, definieren wir zunächst zwei Variablen: @cols
zum Speichern der Kategorien und @query
zum Speichern der endgültigen Abfrage.
<code class="language-sql">SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) FROM temp c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')</code>
Als nächstes erstellen wir die @cols
-Variablen, indem wir die verschiedenen Kategorien mit Kommas verketten und sicherstellen, dass sie in doppelte Anführungszeichen gesetzt werden.
<code class="language-sql">set @query = 'SELECT date, ' + @cols + ' from ( select date , amount , category from temp ) x pivot ( max(amount) for category in (' + @cols + ') ) p '</code>
Zuletzt weisen wir @query
die Abfragezeichenfolge zu. Die Abfrage beginnt mit der Auswahl der Datumsspalte und aller Kategorien als Spalten. Anschließend wird PIVOT verwendet, um die Daten zu rotieren, wobei die Datumsspalte als Zeilenkopf und die Kategorie als Spaltenkopf dient.
<code class="language-sql">execute(@query)</code>
Durch Ausführen von @query
werden die gewünschten Ergebnisse zurückgegeben und die Daten nach Bedarf geschwenkt.
<code>日期 ABC DEF GHI 2012-01-01 00:00:00.000 1000.00 NULL NULL 2012-02-01 00:00:00.000 NULL 500.00 800.00 2012-02-10 00:00:00.000 NULL 700.00 NULL 2012-03-01 00:00:00.000 1100.00 NULL NULL</code>
Das obige ist der detaillierte Inhalt vonWie kann man Daten im SQL -Server dynamisch mithilfe einer dynamischen Abfrage dynamisch drehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!