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

Wie transponiere ich Zeilen in Spalten in SQL Server?

Linda Hamilton
Freigeben: 2025-01-05 02:02:41
Original
880 Leute haben es durchsucht

How to Transpose Rows to Columns in SQL Server?

Zeilen in Spalten in SQL Server umwandeln

Beim Arbeiten mit Tabellendaten kann das Umsetzen von Zeilen in Spalten eine nützliche Transformation sein. In SQL Server gibt es je nach den spezifischen Anforderungen mehrere Ansätze, um diese Aufgabe zu erfüllen.

Bedingte Aggregation

Eine Methode ist die Verwendung der bedingten Aggregation. Dieser Ansatz eignet sich, wenn die Anzahl der Spalten im Voraus bekannt ist. Durch die Verwendung verschachtelter CASE-Anweisungen können Sie den für jede Spalte abzurufenden Wert basierend auf einer bestimmten Bedingung angeben. Die folgende Abfrage veranschaulicht die bedingte Aggregation:

SELECT TimeSeconds,
       COALESCE(MAX(CASE WHEN TagID = 'A1' THEN Value END), 'n/a') A1,
       COALESCE(MAX(CASE WHEN TagID = 'A2' THEN Value END), 'n/a') A2,
       COALESCE(MAX(CASE WHEN TagID = 'A3' THEN Value END), 'n/a') A3,
       COALESCE(MAX(CASE WHEN TagID = 'A4' THEN Value END), 'n/a') A4
  FROM table1
 GROUP BY TimeSeconds
Nach dem Login kopieren

PIVOT-Operator

Eine weitere Option ist die Verwendung des PIVOT-Operators. Mit diesem Operator können Sie Zeilen basierend auf Schlüsselwerten in Spalten drehen. Die folgende Abfrage verwendet PIVOT, um die Zeilen zu transponieren:

SELECT TimeSeconds, A1, A2, A3, A4
  FROM
(
  SELECT TimeSeconds, TagID, Value
    FROM table1
) s
PIVOT
(
  MAX(Value) FOR TagID IN (A1, A2, A3, A4)
) p
Nach dem Login kopieren

Dynamic SQL

Wenn die Anzahl der Spalten nicht festgelegt ist oder dynamisch bestimmt wird, können Sie Dynamic nutzen SQL. Bei diesem Ansatz wird eine SQL-Abfragezeichenfolge basierend auf den verfügbaren TagID-Werten erstellt und dynamisch ausgeführt. Der folgende Code stellt ein Beispiel dar:

DECLARE @cols NVARCHAR(MAX), @sql NVARCHAR(MAX)

SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(TagID)
            FROM Table1
            ORDER BY 1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)'),1,1,'')

SET @sql = 'SELECT TimeSeconds, ' + @cols + '
              FROM
            (
              SELECT TimeSeconds, TagID, Value
                FROM table1
            ) s
            PIVOT
            (
              MAX(Value) FOR TagID IN (' + @cols + ')
            ) p'

EXECUTE(@sql)
Nach dem Login kopieren

Diese Techniken bieten verschiedene Möglichkeiten, Zeilen in Spalten in SQL Server zu transponieren. Der am besten geeignete Ansatz hängt von der Art der Daten und den spezifischen Anforderungen der Aufgabe ab.

Das obige ist der detaillierte Inhalt vonWie transponiere ich Zeilen in 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