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

作者:mdxy-dxy 时间:2024-01-24 11:30:20 

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


描述:将如下形式的数据按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
标签:字符合并
0
投稿

猜你喜欢

  • node.js使用免费的阿里云ip查询获取ip所在地【推荐】

    2024-05-13 09:30:23
  • 浅谈python中的__init__、__new__和__call__方法

    2023-01-05 21:21:03
  • 瀑布流布局浅析

    2011-09-16 20:18:09
  • python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例

    2021-04-01 05:54:41
  • 写了一个小巧的jquery拾色工具

    2009-12-21 14:22:00
  • 一些sql语句

    2009-04-10 18:36:00
  • 基于JavaScript实现的插入排序算法分析

    2024-04-16 08:55:36
  • nlp自然语言处理学习CBOW模型类实现示例解析

    2023-08-08 00:26:03
  • 用户"sa"登陆失败 SQLServer 错误18456的解决方法

    2024-01-18 18:04:37
  • ASP:判断访问是否来自搜索引擎的函数

    2008-03-12 11:39:00
  • 学习python之编写简单简单连接数据库并执行查询操作

    2024-01-23 05:50:13
  • 详解pyenv下使用python matplotlib模块的问题解决

    2023-08-08 20:25:01
  • Mysql 1864 主从错误解决方法

    2024-01-17 05:01:35
  • pytorch中的自定义数据处理详解

    2023-08-21 09:31:35
  • python使用KNN算法识别手写数字

    2022-02-20 10:48:23
  • 如何在CocosCreator中做一个List

    2024-04-28 09:46:04
  • java代码获取数据库表里数据的总数操作

    2024-01-14 23:41:31
  • 手把手教你使用Python创建微信机器人

    2022-02-11 14:12:29
  • python中plt.imshow与cv2.imshow显示颜色问题

    2023-12-13 10:47:54
  • python中模块导入模式详解

    2022-04-03 08:54:29
  • asp之家 网络编程 m.aspxhome.com