sql两列内容合并(分组字符合并SQL语句 按某字段合并字符串之一简单合并)
类别:数据库 浏览量:2131
时间:2022-01-23 02:56:32 sql两列内容合并
分组字符合并SQL语句 按某字段合并字符串之一简单合并标题:按某字段合并字符串之一(简单合并)
描述:将如下形式的数据按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语句的介绍。希望对大家有所帮助。
标签:字符合并
热门推荐
- uni app开发教程(uniapp+Html5端实现PC端适配)
- app软件和网站对服务器的区别(网站服务器与APP服务器之间有何区别)
- docker配置和启动(Docker的安装与配置命令代码实例)
- 搭建web服务器的步骤(windows下三种web服务器搭建方式)
- docker 构建整个环境(Docker如何快速搭建LNMP环境最新)
- Json序列化对象的部分属性值
- python基于django的博客系统(利用django+wechat-python-sdk 创建微信服务器接入的方法)
- apache静态化怎么用(apache中访问不了伪静态页面的解决方法)
- python集合类(Python数据类型之Set集合实例详解)
- 常见的.NET面试题及推荐答案(一)