--生成测试数据
create table 表(FieldA varchar(20),FieldB varchar(20))
insert into 表 select 'A','AAA'
insert into 表 select 'A','BBB'
insert into 表 select 'A','CCC'
insert into 表 select 'B','DDD'
insert into 表 select 'B','EEE'
go--创建用户定义函数
create function f_str(@FieldA varchar(20))
returns varchar(8000)
as
begin
    declare @ret varchar(8000)
    set @ret = ''
    select @ret = @ret+','+FieldB from 表 where FieldA = @FieldA
    set @ret = stuff(@ret,1,1,'')
    return @ret 
end
go
--执行
select FieldA,FieldB=dbo.f_str(FieldA) from 表 group by FieldA order by FieldA
go--输出结果
/*
FieldA     FieldB
---------  --------------
A          AAA,BBB,CCC
B          DDD,EEE
*/
--删除测试数据
drop function f_str
drop table 表
go

解决方案 »

  1.   

    十分感谢!
    不过结果出来是这样的。A          AAA       ,BBB       ,CCC       
    B          DDD       ,EEE       AAA和BBB之间很有大空格,应该在上面函数里什么地方改啊?
    我自己也琢磨琢磨
      

  2.   

    select @ret = @ret+','+rtrim(FieldB) from 表 where FieldA = @FieldA
      

  3.   

    理解!是我的字段设置为char了。
    谢谢!
    给分。
      

  4.   

    libin_ftsafe(子陌红尘) ( ) 真是时间丰富阿