您现在的位置是:网站首页> 编程资料编程资料
分组字符合并SQL语句 按某字段合并字符串之一(简单合并)_MsSql_
2023-05-26
362人已围观
简介 分组字符合并SQL语句 按某字段合并字符串之一(简单合并)_MsSql_
标题:按某字段合并字符串之一(简单合并)
描述:将如下形式的数据按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 tb3、使用游标合并数据
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语句的介绍。希望对大家有所帮助。
您可能感兴趣的文章:
相关内容
- 分组后分组合计以及总计SQL语句(稍微整理了一下)_MsSql_
- sql分组后二次汇总(处理表重复记录查询和删除)的实现方法_MsSql_
- SQL去除重复记录(七种)_MsSql_
- java连接mysql数据库 java连接sql server数据库_MsSql_
- Sql Server 2012完全卸载方法 只需8步轻松卸载_MsSql_
- SQL Server 聚焦存储过程性能优化、数据压缩和页压缩提高IO性能方法(一)_MsSql_
- SQL查询中需要使用别名问题_MsSql_
- SQL Server Parameter Sniffing及其改进方法_MsSql_
- 用非动态SQL Server SQL语句来对动态查询进行执行_MsSql_
- SQL SERVER 中构建执行动态SQL语句的方法_MsSql_
