2011-01-20 3 views
1

을 내가 가진이 같은 데이터 :제발 도와주세요, 그의 수행하는 방법 - SQL 쿼리 (SQL 서버 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

+0

아니, 난 MySQL의 전문가가 아닌 SQL-서버-2000 하나입니다. 죄송합니다. * 냄새 *. 확인 – shamittomar

+0

그게 전부는, 어떤 식 으로든 당신을 감사합니다 :) – Kishh

답변

1

먼저

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

다음 시간을, 예제와 함께 원하는 정렬 기준을 작성하십시오. ... 당신이 ID를 취하고 후 당신 문자열을 반환하는 함수를 작성,

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

하지만이 NULL 날짜와 기록에서 이름을 잃어 버리게된다. 나는 그것이 좀 더 복잡하다고 생각한다. 어쩌면 그것은 절차가 필요할지도 모른다. – bluish