主页 > 知识库 > 分组字符合并SQL语句 按某字段合并字符串之一(简单合并)

分组字符合并SQL语句 按某字段合并字符串之一(简单合并)

热门标签:零成本地图标注赚钱 家庭农场地图标注名称怎样起名 互联网电话外呼系统 千呼电话机器人可以试用吗 我要地图标注数量有限制吗 电话机器人怎么代理商 400电话办理泰安 安卡拉地图标注app 电销需要外呼系统吗

标题:按某字段合并字符串之一(简单合并)


描述:将如下形式的数据按id字段合并value字段。
id    value
----- ------
1     aa
1     bb
2     aaa
2     bbb
2     ccc
需要得到结果:
id     value
------ -----------
1      aa,bb
2      aaa,bbb,ccc
即:group by id, 求 value 的和(字符串相加)

1、sql2000中只能用自定义的函数解决

create table tb(id int, value varchar(10))

insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2,'ccc')
go



create function dbo.f_str(@id int) 
returns varchar(100)
as
begin
 
declare @str varchar(1000) 
set @str='' select @str=@str+''+cast(value as varchar) 
from tb where id = @id 
set @str=right(@str , len(@str) - 1) 
return @str
end
go



--调用函数


select id , value = dbo.f_str(id) from tb group by id


drop function dbo.f_str

drop table tb

2、sql2005中的方法

create table tb(id int, value varchar(10))

insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go

select id, [value] = stuff((select ',' + [value] from tb t where id = tb.id 
for xml path('')) , 1 , 1 , '')from tb group by id

drop table tb

3、使用游标合并数据

create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go

declare @t table(id int,value varchar(100))
--定义结果集表变量
--定义游标并进行合并处理

declare my_cursor cursor local for
select id , value from tb
declare @id_old int , @id int , @value varchar(10) , @s varchar(100)
open my_cursor fetch my_cursor into @id , @value
select @id_old = @id , @s=''while @@FETCH_STATUS = 0
begin
 if @id = @id_old
  select @s = @s + ',' + cast(@value as varchar) else
  begin
  insert @t values(@id_old , stuff(@s,1,1,'')) 
  select @s = ',' + cast(@value as varchar) , @id_old = @id
  end
 fetch my_cursor into @id , @value END 
 insert @t values(@id_old , stuff(@s,1,1,''))
 close my_cursor
 deallocate my_cursor
 select * from @t
drop table tb

以上就是关于分组字符合并SQL语句的介绍。希望对大家有所帮助。

您可能感兴趣的文章:
  • mysql单字段多值分割和合并的处理方法
  • Mysql合并结果接横向拼接字段的实现步骤
  • MySQL Union合并查询数据及表别名、字段别名用法分析
  • mysql 列转行,合并字段的方法(必看)
  • sql server 中合并某个字段值的实例
  • mysql中合并两个字段的方法分享
  • SQL函数将某个字段合并在一起的操作

标签:东营 新乡 黄山 滨州 文山 池州 来宾 大同

巨人网络通讯声明:本文标题《分组字符合并SQL语句 按某字段合并字符串之一(简单合并)》,本文关键词  分组,字符,合并,SQL,语句,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《分组字符合并SQL语句 按某字段合并字符串之一(简单合并)》相关的同类信息!
  • 本页收集关于分组字符合并SQL语句 按某字段合并字符串之一(简单合并)的相关信息资讯供网民参考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推荐文章