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

Wie konvertiert man Spalten in SQL Server effizient in Zeilen?

Barbara Streisand
Freigeben: 2025-01-21 19:32:09
Original
1041 Leute haben es durchsucht

How to Efficiently Convert Columns to Rows in SQL Server?

SQL Server: Spalten in Zeilen konvertieren

In SQL Server müssen Sie möglicherweise eine Tabelle mit mehreren Indikatorspalten in eine Zeilenstruktur für jeden Indikator und seinen entsprechenden Wert konvertieren. Dies kann durch verschiedene Techniken erreicht werden.

UNPIVOT-Funktion

Die UNPIVOT-Funktion ist eine einfache Möglichkeit, Spalten in Zeilen umzuwandeln. Es wandelt die angegebenen Spalten in Zeilen um, wobei die ursprünglichen Spaltennamen zu neuen Zeilen mit der Bezeichnung „Indikatorname“ werden. Der Wert der ursprünglichen Spalte wird zur Zeile mit der Bezeichnung „Indikatorwert“.

<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 von UNION ALL

Eine andere Möglichkeit besteht darin, CROSS APPLY mit UNION ALL zu kombinieren:

<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

CROSS APPLY mit VALUES-Klausel

Wenn Ihre SQL Server-Version dies unterstützt, können Sie die VALUES-Klausel auch mit CROSS APPLY verwenden:

<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

Bei Tabellen mit vielen Indikatorspalten kann das manuelle Generieren der erforderlichen SQL-Anweisungen mühsam sein. Dynamic SQL kann diesen Prozess automatisieren:

<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

Diese Technologien bieten flexible Methoden zum Konvertieren von Spalten in Zeilen in SQL Server und können an unterschiedliche Tabellenstrukturen und Datenanforderungen angepasst werden.

Das obige ist der detaillierte Inhalt vonWie konvertiert man Spalten in SQL Server 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