Pokud používáte SQL Server 2005, můžete použít příkaz 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]
Je to mnohem jednodušší než použití kurzoru a zdá se, že to funguje docela dobře.
Aktualizovat
Pro každého, kdo stále používá tuto metodu s novějšími verzemi SQL Server, existuje jiný způsob, jak to udělat, který je o něco jednodušší a výkonnější pomocí STRING_AGG
metoda, která je k dispozici od SQL Server 2017.
SELECT [VehicleID]
,[Name]
,(SELECT STRING_AGG([City], ', ')
FROM [Location]
WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V
To také umožňuje zadat jiný oddělovač jako druhý parametr, což poskytuje o něco větší flexibilitu oproti předchozí metodě.