Effizientes Kombinieren von Unterabfrageergebnissen in einem einzigen getrennten Feld in SQL Server
SQL Server bietet mehrere Methoden zum Verketten mehrerer Zeilen aus einer Unterabfrage in einem einzelnen Feld mit einem Trennzeichen. Obwohl serverseitige Cursor eine Option sind, sind sie oft weniger effizient. In diesem Artikel werden effektivere Techniken untersucht.
FÜR XML PATH: Eine Lösung für ältere SQL Server-Versionen (2005 und niedriger)
Für SQL Server 2005 und frühere Versionen bietet der Befehl FOR XML PATH
eine übersichtliche Lösung:
SELECT [VehicleID] , [Name] , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH ('')), 1, 2, '')) AS Locations FROM [Vehicle]
Dies nutzt geschickt die XML-Pfadgenerierung, um City
Werte zu verketten, und STUFF
entfernt dann das anfängliche Komma.
STRING_AGG: Die bevorzugte Methode für SQL Server 2017 und höher
SQL Server 2017 und spätere Versionen führen STRING_AGG
ein, eine deutlich verbesserte Funktion:
SELECT [VehicleID] ,[Name] ,(SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V
STRING_AGG
bietet eine bessere Leistung und ermöglicht benutzerdefinierte Trennzeichen, was es zum empfohlenen Ansatz für moderne SQL Server-Bereitstellungen macht.
Zusammenfassung
Diese Methoden bieten effiziente Möglichkeiten, mehrere Unterabfragezeilen in einer einzigen durch Trennzeichen getrennten Zeichenfolge in SQL Server zu konsolidieren und so Datenmanipulationsaufgaben zu rationalisieren. Die Wahl der geeigneten Methode hängt von Ihrer SQL Server-Version ab; STRING_AGG
ist aufgrund seiner verbesserten Leistung und Flexibilität die bevorzugte Wahl für neuere Versionen.
Das obige ist der detaillierte Inhalt vonWie kann ich in SQL Server mehrere Unterabfragezeilen zu einem einzigen durch Trennzeichen getrennten Feld verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!