Wenn Sie SQL Server 2005 verwenden, können Sie den Befehl FOR XML PATH verwenden.
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]
Es ist viel einfacher als die Verwendung eines Cursors und scheint ziemlich gut zu funktionieren.
Aktualisieren
Für alle, die diese Methode noch mit neueren Versionen von SQL Server verwenden, gibt es eine etwas einfachere und performantere Möglichkeit, dies mit dem STRING_AGG
zu tun Methode, die seit SQL Server 2017 verfügbar ist.
SELECT [VehicleID]
,[Name]
,(SELECT STRING_AGG([City], ', ')
FROM [Location]
WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V
Dadurch kann auch ein anderes Trennzeichen als zweiter Parameter angegeben werden, was gegenüber der vorherigen Methode etwas mehr Flexibilität bietet.