Jika Anda menggunakan SQL Server 2005, Anda dapat menggunakan perintah 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]
Ini jauh lebih mudah daripada menggunakan kursor, dan tampaknya bekerja dengan cukup baik.
Perbarui
Bagi siapa saja yang masih menggunakan metode ini dengan versi SQL Server yang lebih baru, ada cara lain untuk melakukannya yang sedikit lebih mudah dan lebih berperforma menggunakanSTRING_AGG
metode yang telah tersedia sejak SQL Server 2017.
SELECT [VehicleID]
,[Name]
,(SELECT STRING_AGG([City], ', ')
FROM [Location]
WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V
Ini juga memungkinkan pemisah yang berbeda untuk ditetapkan sebagai parameter kedua, memberikan sedikit lebih banyak fleksibilitas dibandingkan metode sebelumnya.