SQL查询优化:如何合并同一Contact_ID下的重复Order_group数值?
修改SQL查询实现去重后的分组合并
方法一:直接使用DISTINCT聚合(推荐)
适用于SQL Server 2017及以上、Azure SQL等支持STRING_AGG(DISTINCT)语法的环境,一步完成去重与合并:
SELECT Contact_ID, STRING_AGG(DISTINCT Order_group, ', ') AS 'ORDER GROUP' FROM Main WHERE Contact_ID = 32221 GROUP BY Contact_ID
方法二:先去重再聚合(兼容旧版本)
如果你的数据库版本不支持STRING_AGG(DISTINCT),可以先通过子查询获取去重后的数据集,再进行聚合:
SELECT Contact_ID, STRING_AGG(Order_group, ', ') AS 'ORDER GROUP' FROM ( SELECT DISTINCT Contact_ID, Order_group FROM Main WHERE Contact_ID = 32221 ) AS DistinctGroups GROUP BY Contact_ID
执行结果
两种方法都会得到你期望的去重后结果:
| Contact_ID | ORDER GROUP |
|---|---|
| 32221 | 55555, 44444 |
内容的提问来源于stack exchange,提问作者lara M
相关产品推荐
相关产品推荐

