Heim >Datenbank >MySQL-Tutorial >Wie kann ich Daten mit einer unbekannten Anzahl von Spalten in SQL Server 2005 Pivotieren?
Pivot-Datenverarbeitung mit unbekannter Anzahl von Spalten in SQL Server 2005
In diesem Artikel werden die entscheidenden Herausforderungen beim Umgang mit Daten mit einer unbekannten Anzahl von Spalten in SQL Server 2005 untersucht. Der angegebene Datensatz enthält Spalten mit Variablen, die Aufgaben und Noten darstellen, und die gewünschte Ausgabe ist eine Pivot-Tabelle mit Spalten für Aufgaben und Gesamtpunktzahlen der Schüler.
Aufgrund der Einschränkungen von SQL Server 2005 ist eine reine SQL-Lösung (kein dynamisches SQL) für diese Aufgabe nicht möglich. Wie in der vorgeschlagenen Antwort erwähnt, bietet dynamisches SQL eine Möglichkeit, die erforderlichen Anweisungen basierend auf den aktuellen Daten dynamisch zu generieren.
Wenn beispielsweise eine Tabelle mit dem Namen „Aufgaben“ Aufgabennamen und Fälligkeitstermine enthält:
<code class="language-sql">CREATE TABLE Assignments ( ID int NOT NULL, AssignmentName varchar(50) NOT NULL, DueDate datetime );</code>
und Daten:
<code class="language-sql">INSERT INTO Assignments (ID, AssignmentName, DueDate) VALUES (1, 'Assignment 1', '2023-03-01'), (2, 'Assignment 2', '2023-04-01'), (3, 'Assignment 3', '2023-05-01');</code>
Die erforderliche Ausgabe kann mit dem folgenden dynamischen SQL generiert werden:
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SET @cols = (SELECT STUFF(( SELECT ',[' + AssignmentName + ']' FROM Assignments FOR XML PATH(''), TYPE ), 1, 1, '')); SET @query = 'SELECT StudentName, ' + @cols + ', SUM(Grade) OVER (PARTITION BY StudentName) AS Total FROM (SELECT StudentName, AssignmentName, CASE WHEN AssignmentName = ''Total'' THEN NULL ELSE Grade END AS Grade FROM YourTable) AS t PIVOT (MAX(Grade) FOR AssignmentName IN (' + @cols + ')) AS pvt'; EXECUTE(@query);</code>
Dadurch wird eine Pivot-Tabelle mit der Aufgabenspalte und der Gesamtpunktzahl der Schüler erstellt, sortiert nach Fälligkeitsdatum (sofern die Spalte „Fälligkeitsdatum“ in der Tabelle vorhanden ist).
Das obige ist der detaillierte Inhalt vonWie kann ich Daten mit einer unbekannten Anzahl von Spalten in SQL Server 2005 Pivotieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!