कोई CURSOR, WHILE लूप या उपयोगकर्ता-परिभाषित फ़ंक्शन की आवश्यकता नहीं है .
बस XML और PATH के लिए रचनात्मक होने की आवश्यकता है।
[नोट:यह समाधान केवल SQL 2005 और बाद में काम करता है। मूल प्रश्न में उपयोग में आने वाले संस्करण को निर्दिष्ट नहीं किया गया था।]
CREATE TABLE #YourTable ([ID] INT, [Name] CHAR(1), [Value] INT)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'A',4)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'B',8)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9)
SELECT
[ID],
STUFF((
SELECT ', ' + [Name] + ':' + CAST([Value] AS VARCHAR(MAX))
FROM #YourTable
WHERE (ID = Results.ID)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
,1,2,'') AS NameValues
FROM #YourTable Results
GROUP BY ID
DROP TABLE #YourTable