SQL Server-Tabellenspalten in Zeilen konvertieren
Das Konvertieren von Tabellenspalten in Zeilen ist eine sehr nützliche Datenverarbeitungstechnik. In diesem Artikel werden verschiedene Möglichkeiten zum Ausführen dieser Aufgabe in SQL Server beschrieben.
UNPIVOT-Funktion
Die UNPIVOT-Funktion wandelt Spalten explizit in Zeilen um und ermöglicht so eine flexible Datenreorganisation. Um beispielsweise die Spalte „Indicator1“ in die Spalte „Indicator150“ im Beispieltabellenschema zu konvertieren:
<code class="language-sql">select id, entityId, indicatorname, indicatorvalue from yourtable unpivot ( indicatorvalue for indicatorname in (Indicator1, Indicator2, Indicator3) ) unpiv;</code>
Verwenden Sie CROSS APPLY und UNION ALL
Alternativ können mehrere Unterabfragen mit CROSS APPLY und UNION ALL kombiniert werden:
<code class="language-sql">select id, entityid, indicatorname, indicatorvalue from yourtable cross apply ( select 'Indicator1', Indicator1 union all select 'Indicator2', Indicator2 union all select 'Indicator3', Indicator3 union all select 'Indicator4', Indicator4 ) c (indicatorname, indicatorvalue);</code>
Verwenden Sie CROSS APPLY- und VALUES-Klauseln
In unterstützten Versionen von SQL Server können die Klauseln CROSS APPLY und VALUES verwendet werden:
<code class="language-sql">select id, entityid, indicatorname, indicatorvalue from yourtable cross apply ( values ('Indicator1', Indicator1), ('Indicator2', Indicator2), ('Indicator3', Indicator3), ('Indicator4', Indicator4) ) c (indicatorname, indicatorvalue);</code>
Dynamisches SQL für eine große Anzahl von Spalten
Für Tabellen mit einer großen Anzahl von Spalten, die entdreht werden müssen, sollten Sie die Verwendung von dynamischem SQL in Betracht ziehen, um die Abfrage programmgesteuert zu generieren:
<code class="language-sql">DECLARE @colsUnpivot AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @colsUnpivot = stuff((select ','+quotename(C.column_name) from information_schema.columns as C where C.table_name = 'yourtable' and C.column_name like 'Indicator%' for xml path('')), 1, 1, '') set @query = 'select id, entityId, indicatorname, indicatorvalue from yourtable unpivot ( indicatorvalue for indicatorname in ('+ @colsunpivot +') ) u' exec sp_executesql @query;</code>
Das obige ist der detaillierte Inhalt vonWie konvertiert man SQL Server-Tabellenspalten effizient in Zeilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!