Ако използвате SQL Server 2005, можете да използвате командата 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]
Това е много по-лесно от използването на курсор и изглежда работи доста добре.
Актуализиране
За всеки, който все още използва този метод с по-нови версии на SQL Server, има друг начин да го направи, който е малко по-лесен и по-ефективен с помощта на STRING_AGG
метод, който е наличен от SQL Server 2017.
SELECT [VehicleID]
,[Name]
,(SELECT STRING_AGG([City], ', ')
FROM [Location]
WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V
Това също така позволява да се посочи различен разделител като втори параметър, осигурявайки малко повече гъвкавост спрямо предишния метод.