Heim > Datenbank > MySQL-Tutorial > Wie kann ich Daten mit unbekannten Spalten in SQL Server 2005 dynamisch Pivotieren?

Wie kann ich Daten mit unbekannten Spalten in SQL Server 2005 dynamisch Pivotieren?

Mary-Kate Olsen
Freigeben: 2025-01-13 09:46:43
Original
786 Leute haben es durchsucht

How to Dynamically Pivot Data with Unknown Columns in SQL Server 2005?

SQL Server 2005 Dynamic Pivot

In SQL Server 2005 können Pivot-Vorgänge mit einer unbekannten Anzahl von Spalten schwierig sein. In diesem Artikel werden Lösungen für solche Probleme untersucht.

Frage:

Wie kann ich Daten mit unbekannter Spaltenanzahl in SQL Server 2005 dynamisch Pivotieren? Die gewünschte Ausgabe sollte einer Tabelle mit eindeutigen Schülern als Zeilen, dynamischen Spalten für Aufgaben und einer Sortierung nach Fälligkeitsdatum ähneln. Wenn möglich, sollte die Spalte „Gesamt“ zuletzt erscheinen.

Antwort:

Aufgrund der Einschränkungen von SQL Server 2005 kann es erforderlich sein, dynamisches SQL zu verwenden, um dynamische Pivots zu implementieren. Eine mögliche Lösung besteht darin, dynamische Verwaltungsansichten (DMVs) und XML zu nutzen, um dynamische SQL-Anweisungen zu generieren.

<code class="language-sql">DECLARE @DynamicSQL NVARCHAR(MAX) = N'';

-- 从表中获取不同的作业名称
SELECT DISTINCT AssignmentName
INTO #AssignmentNames
FROM TableName;

-- 循环遍历作业名称
SELECT @DynamicSQL = @DynamicSQL + '
  MAX(CASE WHEN AssignmentName = ''' + AssignmentName + ''' THEN Grade END) AS ' + AssignmentName + ','

FROM #AssignmentNames;

-- 删除动态 SQL 语句末尾的逗号
SET @DynamicSQL = LEFT(@DynamicSQL, LEN(@DynamicSQL) - 1);

-- 构造用于透视的最终动态 SQL 语句
SET @DynamicSQL = 'SELECT StudentName, ' + @DynamicSQL + '
  FROM TableName
  GROUP BY StudentName;';

-- 执行动态 SQL 语句
EXEC sp_executesql @DynamicSQL;</code>
Nach dem Login kopieren

Diese Methode generiert eine dynamische SQL-Anweisung, die die für die Pivotierung erforderlichen Spalten basierend auf den verschiedenen in der Tabelle identifizierten Jobnamen enthält.

Hinweis:

Obwohl diese Lösung dynamisches SQL beinhaltet, ist sie nicht anfällig für Injektionsangriffe, da die SQL-Anweisungen aus bekannten und vertrauenswürdigen Daten erstellt werden. Wenn sich die Daten häufig ändern, sollten Sie alternativ die Implementierung einer Codegenerierung in Betracht ziehen, um gespeicherte Prozeduren mit den erforderlichen SQL-Anweisungen zu erstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten mit unbekannten Spalten in SQL Server 2005 dynamisch Pivotieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage