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