SQL列合并的查询问题

表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'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值