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
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
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)
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!