2011-01-20 59 views
1

我有这样的数据:请帮帮我,怎么做他的 - SQL查询(SQL Server 2000中)

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 
+0

你能帮我解答吗? – Kishh 2011-01-20 07:07:50

+0

不,我是MySQL专家,不是SQL-Server-2000。对不起兄弟,*嗅*。 – shamittomar 2011-01-20 07:09:34

回答

1

首先,创建一个函数,它接受一个I​​D,并返回你后面的字符串...

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

下一次,除了例子之外,写出所需的排序标准。试试这个:

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