2012-04-13 19 views
-3

表CityidとCITYname 2列にして、クエリのユニークなIDを書き込む:異なる都市の

city id city name 
1  Bang 
1  hyd 
1  pune 
2  hyd 
2  pune 
2  chennai 

私は結果が欲しい:

1 ---hyd,pune,bang(all citynames of city id) 
2--- 
+0

どのデータベースエンジンですか? – Randy

答えて

0

はGROUP_CONCAT

またはUSER定義の集計を検索機能

1

あなたはあなたの質問に答えるために必要ないくつかの重要な詳細を中止しました:どの言語があなたは使っていますか?ここで

は、SQL Server 2005/2008上でT-SQLを使用している場合、答えは:

あなたの表:

CREATE TABLE [dbo].[cities](
    [cityid] [int] NULL, 
    [cityname] [varchar](50) NULL 
) ON [PRIMARY] 

データ:

insert into cities(cityid,cityname)values(1,'Seattle') 
insert into cities(cityid,cityname)values(1,'Portland') 
insert into cities(cityid,cityname)values(2,'New York') 
insert into cities(cityid,cityname)values(2,'Newark') 

あなたのクエリ:

declare @result table(
    cityid int, 
    cityname varchar(max) 
) 

declare @queue table(
    cityid int, 
    cityname varchar(50) 
) 

declare @cityid int 
declare @cityname varchar(50) 

insert into @queue select * from cities 

while(exists(select top 1 cityid from @queue)) begin 
    select top 1 @cityid = cityid, @cityname = cityname from @queue 
    if(exists(select cityid from @result where cityid = @cityid)) begin 
     update @result 
     set cityname = cityname + ', ' + @cityname 
     where cityid = @cityid 
    end else begin 
     insert into @result(cityid,cityname) values(@cityid,@cityname) 
    end 
    delete from @queue where cityid = @cityid and cityname = @cityname 
end 

select * from @result 

あなたの結果:

cityid cityname 
1 1   Seattle, Portland 
2 2   New York, Newark