Detaillierte Erläuterung der SQL Server-Listenaggregation
Bei relationalen Datenbankoperationen ist die Datenaggregation ein wichtiger Schritt bei der Integration mehrerer Datensatzinformationen in aussagekräftige Zusammenfassungen. Die Listenaggregation ist eine solche Aggregationsmethode, die mehrere Werte in einer einzigen getrennten Liste verkettet.
SQL Server selbst stellt keine Oracle-ähnliche LISTAGG-Funktion direkt bereit. Die gleiche Funktionalität kann jedoch durch mehrere Techniken erreicht werden.
Methode 1: STRING_AGG (SQL Server 2017 und höher)
Für SQL Server 2017 und höher bietet die Funktion STRING_AGG eine praktische Lösung für die Listenaggregation:
<code class="language-sql">SELECT FieldA , STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs FROM TableName GROUP BY FieldA ORDER BY FieldA;</code>
Methode 2: Rekursiver CTE (SQL Server 2016 und niedriger)
In früheren Versionen von SQL Server konnten Sie rekursive allgemeine Tabellenausdrücke (CTEs) verwenden, um Listenaggregationen zu implementieren:
<code class="language-sql"> WITH CTE_TableName AS ( SELECT FieldA, FieldB FROM TableName) SELECT t0.FieldA , STUFF(( SELECT ',' + t1.FieldB FROM CTE_TableName t1 WHERE t1.FieldA = t0.FieldA ORDER BY t1.FieldB FOR XML PATH('')), 1, LEN(','), '') AS FieldBs FROM CTE_TableName t0 GROUP BY t0.FieldA ORDER BY FieldA;</code>
Kompatibilität mit anderen Datenbanken
Für andere Datenbanksysteme als SQL Server stehen folgende Alternativen zur Verfügung:
Zusammenfassung
Obwohl SQL Server nicht über eine native LISTAGG-Funktion verfügt, gibt es viele Möglichkeiten, eine ähnliche Funktionalität zu erreichen. Abhängig von der von Ihnen verwendeten SQL Server-Version bieten diese Methoden flexible Optionen zum Aggregieren von Zeichenfolgendaten in einer durch Trennzeichen getrennten Liste.
Das obige ist der detaillierte Inhalt vonWie führe ich eine Listenaggregation in SQL Server durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!