借助用户定义函数:
---------------------------------------------------------------------
--生成测试数据
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
insert T select '张三 ', '张小三 '
union all select '张三 ', '张小梅 '
union all select '张三 ', '张公 '
union all select '李四 ', '李小雨 '
union all select '李四 ', '李京 '
union all select '王五 ', '王虎 '
union all select '王五 ', '王日 '
create function fun(@name nvarchar(20))
returns nvarchar(200)
as
begin
declare @re nvarchar(200)
set @re= ' '
select @re=@re+ ', '+son_name from T where [name]=@name
return stuff(@re,1,1, ' ')
end
select distinct [name],dbo.fun([name]) as son_name from T