Om du använder SQL Server 2005 kan du använda kommandot FOR XML PATH.
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]
Det är mycket enklare än att använda en markör och verkar fungera ganska bra.
Uppdatera
För alla som fortfarande använder den här metoden med nyare versioner av SQL Server, finns det ett annat sätt att göra det på som är lite enklare och mer prestanda med STRING_AGG
metod som har varit tillgänglig sedan SQL Server 2017.
SELECT [VehicleID]
,[Name]
,(SELECT STRING_AGG([City], ', ')
FROM [Location]
WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V
Detta gör att en annan separator kan specificeras som den andra parametern, vilket ger lite mer flexibilitet jämfört med den tidigare metoden.