Dynamische Pivot-Daten mit SQL Server 2005
In SQL Server 2005 müssen Sie möglicherweise Daten mit einer unbekannten Anzahl von Spalten in das Pivot-Format konvertieren. In diesem Artikel wird diese Herausforderung untersucht und eine Lösung mithilfe der SQL Server 2005-Technologie bereitgestellt.
Frage:
Betrachten Sie den gegebenen Datensatz, in dem die Aufgaben und Noten der Schüler gespeichert sind. Das gewünschte Ergebnis ist eine Pivot-Tabelle, die die Noten jedes Schülers für alle Aufgaben und am Ende die Gesamtnote anzeigt. Entscheidend ist, dass dies dynamisch sein muss, um einer unterschiedlichen Anzahl von Arbeitsplätzen gerecht zu werden. Darüber hinaus wäre es ideal, nach dem Fälligkeitsdatum der Aufgabe zu sortieren und Gesamtnoten aus der Abfrage auszuschließen.
Lösung (Dynamic SQL):
Während dynamisches SQL im Allgemeinen nicht empfohlen wird, stellt es in diesem Fall die praktischste Lösung dar. Hier ist ein Beispiel für ein dynamisches SQL-Skript, das eine Pivot-Ergebnismenge generiert:
<code class="language-sql">DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT StudentName, ' + STUFF(( SELECT ',[' + AssignmentName + ']' FROM AssignmentNames FOR XML PATH('') ), 1, 1, '') + ' FROM Assignments PIVOT (SUM(Grade) FOR AssignmentName IN (' + STUFF(( SELECT ',' + AssignmentName FROM AssignmentNames FOR XML PATH('') ), 1, 1, '') + ')) AS PivotTable' -- 执行生成的SQL EXEC sp_executesql @sql</code>
Anleitung:
Dieser dynamische SQL-Ansatz bietet Flexibilität bei der Handhabung sich ändernder Auftragsnummern und der Sortierung nach Auftragsfristen. Stellen Sie jedoch sicher, dass dynamisch generiertes SQL noch einmal überprüft wird, um sicherzustellen, dass es nicht anfällig für böswillige Eingaben ist.
Alternative:
Das obige ist der detaillierte Inhalt vonWie kann ich Daten in SQL Server 2005 dynamisch Pivotieren, um eine unbekannte Anzahl von Spalten zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!