SQL Server分组连接并去重类似Mysql的Group_Concat功能实现

本文介绍了如何在SQL Server中模拟MySQL的Group_Concat功能,通过分组连接多个字段并去除重复值,展示了一种在SQL Server中处理类似问题的方法。
摘要由CSDN通过智能技术生成
-- 建表
CREATE TABLE TestA(id int, name varchar(10));
-- 插入测试数据
INSERT INTO TestA VALUES(1, 'aa');
INSERT INTO TestA VALUES(1, 'bb');
INSERT INTO TestA VALUES(1, 'bb');
INSERT INTO TestA VALUES(1, 'eeac');
INSERT INTO TestA VALUES(2, 'cc');
INSERT INTO TestA VALUES(2, 'dd');
INSERT INTO TestA VALUES(2, 'dd');
INSERT INTO TestA VALUES(2, 'ff33');
INSERT INTO TestA VALUES(3, '111');
INSERT INTO TestA VALUES(3, '222');
--测试查询
select * from TestA
-- FOR XML PATH用法,行转列,将某一字段的所有行值连接为一个字段
SELECT '[ '+name+' ]' FROM TestA FOR XML PATH('')
--分组连接方法一:
SELECT distinct(id),name = stuff((SELECT ',' + name FROM TestA t WHERE t.id = TestA.id FOR xml path('')) , 1 , 1 , '') FROM TestA 
--分组连接方法二:
--里面一层查出单独的name,拼成一行,然后使用where条件连接外层,最终发现后面会多一个,号
SELECT id, (SELECT name+',' FROM TestA  WHERE id&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值