Если вы используете SQL 2008, без курсора будет работать следующее:
DECLARE @t TABLE
(
id INT
, number INT
, VALUE INT
)
INSERT INTO @t
( id, number, VALUE )
VALUES ( 1, 300, 233 ),
( 2, 343, 434 ),
( 2, 565, 655 ),
( 3, 562, 343 ),
( 1, 434, 232 ),
( 3, 232, 444 ),
( 3, 458, 232 )
SELECT DISTINCT ID
, STUFF(( SELECT ',' + CONVERT(VARCHAR(10), number) + ':'
+ CONVERT(VARCHAR(10), VALUE)
FROM @t i
WHERE t.ID = i.ID
FOR
XML PATH('')
), 1, 1, '') AS [number:value]
FROM @t t