Heim > Datenbank > MySQL-Tutorial > Wie kann ich in SQL Server Spalten in Zeilen konvertieren?

Wie kann ich in SQL Server Spalten in Zeilen konvertieren?

Patricia Arquette
Freigeben: 2025-01-21 19:27:14
Original
518 Leute haben es durchsucht

How Can I Convert Columns to Rows in SQL Server?

Spalten-zu-Zeilen-Konvertierung in SQL Server

Das Konvertieren von Datenbankspalten in Zeilen ist eine wichtige Technik bei der Datenanalyse und -reorganisation. Es gibt mehrere Möglichkeiten, diese Konvertierung in SQL Server durchzuführen, jede mit ihren eigenen Vorteilen und Überlegungen.

Methode 1: UNPIVOT-Funktion

Die UNPIVOT-Funktion unterstützt nativ die Konvertierung von Spalten in Zeilen. Die Syntax von UNPIVOT lautet wie folgt:

<code class="language-sql">UNPIVOT (indicatorvalue FOR indicatorname IN (Indicator1, Indicator2, Indicator3, ...)) AS unpiv</code>
Nach dem Login kopieren

Beispiel:

<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

Methode 2: Verwenden Sie CROSS APPLY von UNION ALL

CROSS APPLY mit UNION ALL ist eine weitere Möglichkeit, Spalten in Zeilen umzuwandeln. Es kombiniert iterativ Zeilen basierend auf den bereitgestellten Spalten:

<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

Methode 3: CROSS APPLY von WERTEN verwenden

Diese Methode verwendet die VALUES-Klausel in CROSS APPLY, um Spaltennamen und -werte anzugeben:

<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

Methode 4: Dynamisches SQL

Für Szenarien, in denen Sie eine große Anzahl von Spalten abwickeln müssen, kann Dynamic SQL 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

Sie können Spalten-zu-Zeilen-Konvertierungen in SQL Server effizient durchführen, indem Sie die für Ihr spezifisches Szenario am besten geeignete Methode auswählen.

Das obige ist der detaillierte Inhalt vonWie kann ich in SQL Server Spalten in Zeilen konvertieren?. 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