Als u SQL Server 2005 gebruikt, kunt u de opdracht FOR XML PATH gebruiken.
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]
Het is een stuk eenvoudiger dan het gebruik van een cursor, en het lijkt redelijk goed te werken.
Bijwerken
Voor iedereen die deze methode nog steeds gebruikt met nieuwere versies van SQL Server, is er een andere manier om dit te doen die een beetje eenvoudiger en performanter is met behulp van deSTRING_AGG
methode die beschikbaar is sinds SQL Server 2017.
SELECT [VehicleID]
,[Name]
,(SELECT STRING_AGG([City], ', ')
FROM [Location]
WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V
Hierdoor kan ook een ander scheidingsteken worden opgegeven als de tweede parameter, wat een beetje meer flexibiliteit biedt ten opzichte van de vorige methode.