--生成测试数据
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
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
不过结果出来是这样的。A AAA ,BBB ,CCC
B DDD ,EEE AAA和BBB之间很有大空格,应该在上面函数里什么地方改啊?
我自己也琢磨琢磨
谢谢!
给分。