--创建用户定义函数
create function f_str(@name int)
returns varchar(8000)
as 
begin
    declare @ret varchar(8000)
    set @ret = ''
    
    select @ret = @ret + ',' + value from tname where name = @name
    
    set @ret = stuff(@ret,1,1,'')
    
    return @ret
end
--执行查询
select name,value=dbo.f_str(name) from tname group by name order by name

解决方案 »

  1.   

    create function f_1(@name int)
    returns varchar(3000)
    as
    begin
    declare @sql varchar(3000)
    set @sql=''
    select @sql=@sql+','+value from table1 where name=@name
    return right(@sql,len(@sql)-1)
    endselect name,dbo.f_1(name) from table1
      

  2.   

    --生成测试数据
    create table tname(name int,value varchar(10))
    insert into tname select 1,'A'
    insert into tname select 2,'B'
    insert into tname select 1,'C'
    insert into tname select 3,'E'
    insert into tname select 2,'F'
    insert into tname select 1,'G'
    go--创建用户定义函数
    create function f_str(@name int)
    returns varchar(8000)
    as 
    begin
        declare @ret varchar(8000)
        set @ret = ''
        
        select @ret = @ret + ',' + value from tname where name = @name
        
        set @ret = stuff(@ret,1,1,'')
        
        return @ret
    end
    go--执行查询
    select name,value=dbo.f_str(name) from tname group by name order by name--输出结果
    /*
    name  value
    ----  -----
    1     A,C,G
    2     B,F
    3     E
    */--删除测试环境
    drop function f_str
    drop table tname
    go