一个表A B C
1 car 23
1 book 41
1 good 85
1 one 48
1 seat 332 china 52
2 thank 43
2 sow 47
2 rain 983 fair 23
3 cash 46
3 word 48
所需返回的记录为 car,book,good,one,seat
china,thank,sow,rain
fair,cash,word条件是:A中相同的值所在行的B字段里面的值ORDER BY C输出到一行,并且以','间隔.谢谢~
1 car 23
1 book 41
1 good 85
1 one 48
1 seat 332 china 52
2 thank 43
2 sow 47
2 rain 983 fair 23
3 cash 46
3 word 48
所需返回的记录为 car,book,good,one,seat
china,thank,sow,rain
fair,cash,word条件是:A中相同的值所在行的B字段里面的值ORDER BY C输出到一行,并且以','间隔.谢谢~
---------------------------------------------------------------------------------------
--生成测试数据
create table 表(部门 int,人员 varchar(20))
insert into 表 select 1,'张三'
insert into 表 select 1,'李四'
insert into 表 select 1,'王五'
insert into 表 select 2,'赵六'
insert into 表 select 2,'邓七'
insert into 表 select 2,'刘八'
go--创建用户定义函数
create function f_str(@department int)
returns varchar(8000)
as
begin
declare @ret varchar(8000)
set @ret = ''
select @ret = @ret+','+人员 from 表 where 部门 = @department
set @ret = stuff(@ret,1,1,'')
return @ret
end
go
--执行
select 部门,人员=dbo.f_str(部门) from 表 group by 部门 order by 部门
go--输出结果
/*
部门 人员
---- --------------
1 张三,李四,王五
2 赵六,邓七,刘八
*/
--删除测试数据
drop function f_str
drop table 表
go
set @str=''
select @str=@str + B + ',' from table order by Cprint left(@str,len(@str))