Heim > Datenbank > MySQL-Tutorial > Wie konvertiert man SQL Server-Tabellenspalten effizient in Zeilen?

Wie konvertiert man SQL Server-Tabellenspalten effizient in Zeilen?

Linda Hamilton
Freigeben: 2025-01-21 19:17:13
Original
242 Leute haben es durchsucht

How to Efficiently Convert SQL Server Table Columns into Rows?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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