更正如下:谢谢!!ID      NAME
030157  AA                                                                        
030157  BB                                                                    
030157  CC
030159  aa                                                                     
030159  bb                                      
030150  QQID      NAME
030157  AA,BB,CC
030159  aa,bb
030150  QQ

解决方案 »

  1.   

    应该以 Grop by ID 后,动态取值!
    好象写过很多了!你查找一下!!
      

  2.   

    declare @s varchar(8000),@i varchar(20)
    select * into #t from 表 order by id
    set @s=''
    set @i=0
    update #t
    set @s=case when @i=id then @s+','+name
           else name end
        @i=id,id=@i,name=@s
    select id,max(name) as name from #t
    group by id
    drop table #t
      

  3.   

    --写个处理函数
    create function f_str(
    @id varchar(10)
    )returns varchar(8000)
    as
    begin
    declare @r varchar(8000)
    select @r=@r+','+rtrim(Name)
    from 表
    where id=@id
    return(stuff(@r,1,1,''))
    end
    go--调用函数实现查询
    select id,name=dbo.f_str(id)
    from 表 group by id
      

  4.   

    create function fn_Name(
    @id varchar(20)
    )
    returns varchar(200)
    as
    begin
        declare @r varchar(200)
        set @r=''
        select @r=@r+','+rtrim(name) from tablename where id=@id
        if @r<>''  set @r=stuff(@r,1,1,'')
        return @r
    end
    go--查询
    select id,dbo.fn_name(id) as name
    from tablename
    group by id
      

  5.   

    上面有点错误,少了个逗号
    create table tb(id varchar(20),name varchar(15))
    insert tb values('20030157' ,'AAA' )
    insert tb values('20030157',  'BBB'  )
    insert tb values('20030157' , 'CCC' )
    insert tb values('20030159' ,'aaa' )
    insert tb values('20030159' ,'bbb' )
    insert tb values('20030150' ,'QQQ' )declare @s varchar(8000),@i varchar(20)
    select * into #t from tb 
    set @s=''
    set @i=''
    update #t
    set @s=case when @i=id then @s+','+name
           else name end,
        @i=id,id=@i,name=@s
    select id,max(name) as name from #t
    group by id
    drop table #t,TB
    --结果:
    id                   name            
    -------------------- --------------- 
    20030150             QQQ
    20030157             AAA,BBB,CCC
    20030159             aaa,bbb(所影响的行数为 3 行)
      

  6.   

    楼主真搞笑,转oracle版吧oracle解决起来可能比较困难,用存储过程和游标吧。