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语句的介绍。希望对大家有所帮助。
标签:字符合并
热门推荐
- thinkphp5开发教程(thinkPHP5框架接口写法简单示例)
- mysql默认的事务隔离级别是哪一种(MySql学习笔记之事务隔离级别详解)
- python怎么安装queue(python队列Queue的详解)
- 国产云主机哪个好(便宜好用的国内云主机怎么挑选?)
- dedecms调用详解(dedecms文章跳转属性打开后页面空白原因分析及解决)
- python如何安装requests模块(Python常用模块之requests模块用法分析)
- vue监控对象变化(Vue之监听方法案例详解)
- html5 设置缓存(HTML5实现应用程序缓存Application Cache)
- mysql和explain哪个好(MySQL EXPLAIN输出列的详细解释)
- laravel框架两表联查(Laravel 使用查询构造器配合原生sql语句查询的例子)