try:
declare @id int
set @id = 1  
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(pid as varchar) from B where id=@id
set @str=right(@str,len(@str)-1)
Select distinct a_id,@str from B

解决方案 »

  1.   

    create table b(b_id int identity(1,1),a_id int,city varchar(100))
    insert b(a_id,city) values(1,'beijing')
    insert b(a_id,city) values(1,'shanghai')
    insert b(a_id,city) values(1,'shenzhen')
    declare @id int
    set @id = 1  
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+city from B where a_id=@id
    set @str=right(@str,len(@str)-1)
    Select distinct a_id,@str from B-------------
    1           beijing,shanghai,shenzhen(所影响的行数为 1 行)
      

  2.   

    或者
    --1.创建一个合并的函数
    create function fmerg(@id int)
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+city from B where a_id=@id
    set @str=right(@str,len(@str)-1)
    Return(@str)
    End
    go--调用自定义函数得到结果
    select distinct a_id,dbo.fmerg(a_id) from B
      

  3.   

    txlicenhe(马可) ( )
    大哥,cast(pid as varchar)是什么东东,不懂,不好意思,能不能解释一下??
      

  4.   

    create function getstr(@i int)
    returns varchar(8000)
    as 
    begin
    declare @str varchar(8000)
    select @str=rtrim(country) from a where a_id =@i
    select @str=@str+','+rtrim(city) from b where a_id =@i
    return @str
    end
    go
    select a_id,dbo.getstr(a_id) from a group by a_id
      

  5.   

    大哥,你真强啊
      所有city都是放一个里面,用","隔开的,我想要查询出来是分开的,怎么做?
      

  6.   

    假如我的b表中还有一个字段:city1  那又应该怎么查??
      

  7.   

    所有city都是放一个里面,用","隔开的,我想要查询出来是分开的,怎么做?我不是写了?b表中还有一个字段:city1 你要什么结果?
      

  8.   

    也和city查询出来结果一样的啊