Во-первых, вы создаете функцию, которая принимает идентификатор и возвращает строку, которую вы ищете ...
CREATE FUNCTION dbo.StringFromID(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @value varchar(8000)
DECLARE @date datetime
SELECT @date = [date], @value = [name]
FROM test_data WHERE [id] = @id
WHILE EXISTS ( SELECT * FROM test_data
WHERE [id] = @id + 1
AND [date] IS NULL)
BEGIN
SELECT @value = @value + ',' + [name]
FROM test_data
WHERE [id] = @id + 1
SELECT @id = @id + 1
END
RETURN @value
END
Затем вы вызываете эту функцию и отображаете свои результаты.
SELECT [id], dbo.StringFromID(t.[id]) 'Name', [date]
FROM test_data t
WHERE [date] IS NOT NULL