SQL-SERVER的STUFF函数——group by 分组,字符串合并

本文介绍了如何在SQLSERVER中使用GROUP BY语句结合字符串函数STUFF与FOR XML PATH,将同一组内的多条记录的某个字段值合并成一个以逗号分隔的字符串。示例中展示了创建和填充tb_user_product表的过程,以及查询用户购买产品的ID、名称、总金额,并将同一用户购买的不同产品通过逗号连接的查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL SERVER 分组group by之后,字符串合并在一起,逗号隔开。

原本数据:

效果:

代码:

-use DB01;
-- 建表
create table dbo.tb_user_product(
id int null
,name varchar(10) null
,product varchar(100) null 
,amount decimal(9,2) null
);
 
-- 插入数据
insert into dbo.tb_user_product values ('1001','大运','小米10至尊纪念版',5999);
insert into dbo.tb_user_product values ('1001','大运','大米10好吃版',6800);
insert into dbo.tb_user_product values ('1001','大运','华为30max',8999);
insert into dbo.tb_user_product values ('1001','小星','华为10Pro',3500);
insert into dbo.tb_user_product values ('1001','小星','OPPO9',2200);
insert into dbo.tb_user_product values ('1001','阿飞','三星Note20',8500);
-- 查询
select * from dbo.tb_user_product; 
 
 
-- group by 字符串逗号隔开合并在一起
select id
       ,name
	   ,sum(amount) as amount
	   ,products = STUFF(
	                     (select ','+product 
						    from dbo.tb_user_product b
						   where a.id = b.id and a.name = b.name 
						     for xml path(''))
						  ,1
						  ,1
						  ,'')
  from dbo.tb_user_product a
  group by id
           ,name; 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据_苡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值