-3

テーブルCityidおよびCITYname2列:

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---
4

2 に答える 2

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
于 2012-04-13T14:28:46.603 に答える
0

GROUP_CONCATを検索します

またはユーザー定義の集計関数

于 2012-04-13T14:12:28.437 に答える