Пожалуйста, помогите мне, как сделать его - SQL-запрос (SQL Server 2000) - PullRequest
1 голос
/ 20 января 2011

У меня есть такие данные:

ID   Name         Date
1    kishore      18-jan-2010
2    kishh        19-jan-2010
3    kii          NULL
4    kk           null
5    k            19-jan-2010

Я должен получить такой результат:

ID   Name           Date
1    kishore        18-jan-2010
2    kishh,kii,kk   19-jan-2010
5    k              19-jan-2010

Ответы [ 2 ]

1 голос
/ 20 января 2011

Во-первых, вы создаете функцию, которая принимает идентификатор и возвращает строку, которую вы ищете ...

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
0 голосов
/ 20 января 2011

В следующий раз запишите желаемые критерии сортировки в дополнение к примеру. Попробуйте это:

select [id], [name], [date] from MyTable
where [date] is not null
order by [date]
...