日期:2014-05-18  浏览次数:20647 次

如何合并相同ID的多条纪录
数据库 sqlserver,现有数据表结构如下: 
id name 
1 a 
1 b 
1 c 
2 d 
2 e 
3 f 
现在想合并得到如下效果: 
id name 
1 a,b,c 
2 d,e 
3 f 
sql语句应该怎么写?

------解决方案--------------------
参考以下示例:

SQL code
--生成测试数据
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