表 tablea
name job
张三 厨师
张三 会计
李四 厨师
李四 司机
张三 司机
求结果
张三 厨师,会计,司机
李四 厨师,司机
------解决思路----------------------
这个要用XML,SQL2005+有效
SELECT name
,STUFF(
(SELECT ','+job FROM TB T2 WHERE T1.name=T2.name
FOR XML PATH(''))
,1,1,'')
FROM TB T1
GROUP BY name
------解决思路----------------------
create table tablea
(name varchar(10),job varchar(10))
insert into tablea
select '张三','厨师' union all
select '张三','会计' union all
select '李四','厨师' union all
select '李四','司机' union all
select '张三','司机'
create function dbo.fn_jobs
(@name varchar(10)) returns varchar(50)
as
begin
declare @jobs varchar(50)
select @jobs=isnull(@jobs+',','')+job
from tablea
where name=@name
return @jobs
end
select name,dbo.fn_jobs(name) 'jobs'
from tablea
group by name
/*
name jobs
---------- ------------------
李四 厨师,司机
张三 厨师,会计,司机
(2 row(s) affected)
*/