--自定义函数:
create function f_str(@reqno varchar(20))
returns varchar(8000)
as
begin
    declare @ret varchar(8000)
    set @ret = ''
    select @ret = @ret + ',' + rtrim(rcdusrid) from 表A where reqno = @reqno
    return stuff(@ret,1,1,'')
endselect reqno,rcdusrid = dbo.f_str(reqno) from 表A group by reqno

解决方案 »

  1.   

    --自定义函数:
    create function f_str(@reqno varchar(20))
    returns varchar(8000)
    as
    begin
        declare @ret varchar(8000)
        set @ret = ''
        select @ret = @ret + ',' + rtrim(rcdusrid) from 表A where reqno = @reqno
        return stuff(@ret,1,1,'')
    endselect reqno,rcdusrid = dbo.f_str(reqno) from 表A group by reqno
      

  2.   

    我记得曾经在这里看到过只用了一句Sql statement就写出结果的。召唤大人出来指点,谢谢!
      

  3.   

    不想再写了,参考一下这个:
    http://community.csdn.net/Expert/topic/4043/4043660.xml?temp=.8323633
      

  4.   

    --测试数据
    create table 表A(reqno  varchar(10),rcdusrid varchar(100))
    --注意把rcdusrid字段弄大一写,否则你就自己create一个中间表,而不是into中间表了。。
    insert 表A 
    select  'C10888',  'adams'  union all
    select  'C10888',  'allan'   union all
    select   'C11597',  'asnpg94' union all
    select   'C11597',  'frank' union all
    select   'C11597',  'jet'--查询
    select * into #t from 表A
    declare @s varchar(8000),@i varchar(20)
    set @s=''
    set @i=0
    update #t
    set @s=case when @i=reqno then @s+','+rcdusrid
           else rcdusrid end,
        @i=reqno ,reqno=@i,rcdusrid=@s
    select reqno ,rcdusrid=max(rcdusrid) 
    from #t
    group by reqno --删除表
    drop table 表A,#t
    --结果
    reqno       rcdusrid                            
    ---------- -------------------- 
    C10888     adams,allan
    C11597     asnpg94,frank,jet