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语句的介绍。希望对大家有所帮助。
标签:字符合并
热门推荐
- vue原理详解(vue响应式原理与双向数据的深入解析)
- python简易翻译器的运行(Python3.6实现带有简单界面的有道翻译小程序)
- SQL中Between查询日期的问题
- sql server批量导出数据(SQL Server 批量插入数据的完美解决方案)
- CSS3 transition过渡效果
- dedecms主表内容(DEDECMS最为常用的分页标签及分页样式代码)
- sqlserver2016标准分区(Sql Server 2016新功能之Row-Level Security值得关注)
- bootstrap怎么用虚线框(Bootstrap网页布局网格的实现)
- mysql读写分离代码实现(MySQL Router实现MySQL的读写分离的方法)
- tomcat的startup闪退的原因(直接双击启动tomcat中的startup.bat闪退原因及解决方法)