表A
代号 名称
1 a
1 b
1 c
2 a
2 a
2 d
3 d
3 c
3 e
... ...
想得到:
代号 名称
1 a,b,c
2 a,d
3 c,d,e
.. ...
请教各位大师,帮忙,十分感谢!!!
--参考
字符串汇总问题,在SQL Server 2000下受推荐的方式为:用户定义函数。具体处理方法及实现请参考:
---------------------------------------------------------------------------------------
--生成测试数据
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
------------------------------------------------------------------------
create function rowtocol(@id int)
returns varchar(1000)
as
begin
declare @str varchar(1000)
set @str = ''
select @str=@str+','+名称 from 表A where 代号 = @id
set @str = staff(@str,1,1,'')
return @str
end
select 代号,dbo.rowtocol(代号) from 表A group by 代号
---------------------------------------------------------------------------
create table 表A(代号 int,名称 varchar(20))
insert into 表A select 1,'a'
insert into 表A select 1,'b'
insert into 表A select 1,'c'