Verwenden Sie dynamisches SQL, um die Datenperspektive
zu erreichen <:> Frage:
Der Datensatz, der die Spalte Datum, Kategorie und Menge enthält, wird in eine Perspektiventabelle mit dynamischen Kategorien konvertiert. Zum Beispiel die folgenden Daten:
muss konvertiert werden in:
<code>日期 类别 金额 2012年1月1日 ABC 1000.00 2012年2月1日 DEF 500.00 2012年2月1日 GHI 800.00 2012年2月10日 DEF 700.00 2012年3月1日 ABC 1100.00</code>
<code>日期 ABC DEF GHI 2012年1月1日 1000.00 2012年2月1日 500.00 800.00 2012年2月10日 700.00 2012年3月1日 1100.00</code>
Diese Methode verwendet ein dynamisches SQL, um verschiedene Kategorien aus der Tabelle abzurufen. Dann konstruiert es dynamisch Drehklauseln, um alle eindeutigen Kategorien zu berücksichtigen. Sehen Sie dann das Ergebnis entsprechend an, die Daten und Kategoriendaten ausrichten.
<:> Ergebnis:
<code class="language-sql">CREATE TABLE temp ( date DATETIME, category VARCHAR(3), amount MONEY ); INSERT INTO temp VALUES ('2012-01-01', 'ABC', 1000.00); INSERT INTO temp VALUES ('2012-02-01', 'DEF', 500.00); INSERT INTO temp VALUES ('2012-02-01', 'GHI', 800.00); INSERT INTO temp VALUES ('2012-02-10', 'DEF', 700.00); INSERT INTO temp VALUES ('2012-03-01', 'ABC', 1100.00); DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) FROM temp c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,''); SET @query = 'SELECT date, ' + @cols + ' FROM ( SELECT date, amount, category FROM temp ) x PIVOT ( MAX(amount) FOR category IN (' + @cols + ') ) p '; EXECUTE(@query); DROP TABLE temp;</code>
Das obige ist der detaillierte Inhalt vonWie kann ich eine SQL Server-Tabelle mit unterschiedlichen Kategorien dynamisch drehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!