Heim > Datenbank > MySQL-Tutorial > Wie erstelle ich dynamisch Pivot-Spalten in SQL Server?

Wie erstelle ich dynamisch Pivot-Spalten in SQL Server?

Mary-Kate Olsen
Freigeben: 2025-01-07 18:47:41
Original
562 Leute haben es durchsucht

How to Dynamically Generate Pivot Columns in SQL Server?

Dynamische Pivot-Spalten in SQL Server

In SQL Server können Sie mit dynamischen Pivot-Spalten eine Pivot-Tabelle erstellen, deren Spalten sich basierend auf Werten in einer anderen Tabelle ändern. Dies ist nützlich, wenn die Anzahl der Pivot-Spalten im Voraus unbekannt ist oder sich häufig ändert.

Betrachten Sie das folgende Formular:

  • Eigenschaft: Enthält eine Liste von Eigenschaften.
  • PropertyObjects: Verknüpfen Sie Eigenschaften mit Objekten und stellen Sie Werte für Eigenschaften bereit.

Problembeschreibung

Sie möchten eine Pivot-Tabelle erstellen, die eine Spalte für jede Eigenschaft in der Tabelle Eigenschaft enthält. Da sich die Anzahl der Eigenschaften jedoch ändern kann, benötigen Sie eine Möglichkeit, die Spaltennamen dynamisch abzurufen.

Lösung

Um dynamische Pivot-Spalten zu erstellen, können Sie dynamisches SQL mit der PIVOT-Klausel verwenden. Der folgende Code demonstriert eine Lösung:

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);

-- 获取作为逗号分隔字符串的唯一属性名称
SELECT @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(Name)
                      FROM property
                      FOR XML PATH(''), TYPE
                     ).value('.', 'NVARCHAR(MAX)'), 1, 1, '');

-- 构造动态查询
SET @query =
'SELECT *
FROM
(
  SELECT
    o.object_id,
    p.Name,
    o.value
  FROM PropertyObjects AS o
  INNER JOIN property AS p ON o.Property_Id = p.Id
) AS t
PIVOT 
(
  MAX(value)
  FOR Name IN (' + @cols + ')
) AS p;';

-- 执行动态查询
EXEC(@query);</code>
Nach dem Login kopieren

Ergebnisse

Die dynamische Abfrage gibt eine Pivot-Tabelle zurück, die eine Spalte für jede Eigenschaft in der Tabelle Eigenschaft enthält. Der Wert in der Pivot-Tabelle ist der Maximalwert für jede Attribut-Objekt-Kombination.

Zum Beispiel, wenn die Tabelle Eigenschaft die folgenden Eigenschaften enthält:

  • Eigenschaft1
  • Eigenschaft2
  • Eigenschaft3

und die Tabelle PropertyObjects enthält die folgenden Daten:

OBJECT_ID PROPERTY_ID VALUE
1 1 ee
1 2 fd
1 3 fdf
1 4 ewre
2 1 dsd
2 2 sss
2 3 dfew
2 4 dff

Dynamische Abfrage gibt die folgende Pivot-Tabelle zurück:

OBJECT_ID PROPERTY1 PROPERTY2 PROPERTY3 PROPERTY4
1 ee fd fdf ewre
2 dsd sss dfew dff

Das obige ist der detaillierte Inhalt vonWie erstelle ich dynamisch Pivot-Spalten in SQL Server?. 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