यदि आप 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 सर्वर के नए संस्करणों के साथ अभी भी इस पद्धति का उपयोग करने वाले किसी भी व्यक्ति के लिए, इसे करने का एक और तरीका है जो STRING_AGG
का उपयोग करके थोड़ा आसान और अधिक प्रदर्शनकारी है। विधि जो SQL सर्वर 2017 के बाद से उपलब्ध है।
SELECT [VehicleID]
,[Name]
,(SELECT STRING_AGG([City], ', ')
FROM [Location]
WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V
यह एक अलग विभाजक को दूसरे पैरामीटर के रूप में निर्दिष्ट करने की भी अनुमति देता है, जो पूर्व विधि पर थोड़ा अधिक लचीलापन प्रदान करता है।