首页 >数据库 >mysql教程 >在 SQL Server 中使用 STRING_AGG 时如何消除重复项?

在 SQL Server 中使用 STRING_AGG 时如何消除重复项?

Linda Hamilton
Linda Hamilton原创
2025-01-04 07:51:35656浏览

How to Eliminate Duplicates When Using STRING_AGG in SQL Server?

消除 STRING_AGG 结果中的重复项

任务是使用 SQL Server 中的 STRING_AGG 函数检索唯一值,确保删除重复元素.

在提供的示例查询中,使用了 STRING_AGG 函数将字符串连接到单个逗号分隔的字段中,并按 ProjectID 分组。但是,生成的 NewField 包含重复值。

要获得唯一的 NewField,我们可以在子查询中使用 DISTINCT 关键字。更新后的查询为:

SELECT 
  ProjectID
, STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS 
  NewField
FROM (
  SELECT DISTINCT 
    ProjectID
  , newId.value 
  FROM [dbo].[Data] WITH (NOLOCK)  
  CROSS APPLY STRING_SPLIT([bID],';') AS newId  
  WHERE newId.value IN (   'O95833' , 'Q96NY7-2'  )  
) x
GROUP BY ProjectID
ORDER BY ProjectID

子查询首先从原始表中选择 ProjectID 和 newId.value 的不同值。然后,在外部查询中使用这些不同的值来执行 STRING_AGG 操作,确保最终的 NewField 结果中不存在重复项。

执行此修改后的查询将产生仅包含唯一值的所需输出:

ProjectID | NewField
----------+----------
2         | O95833, Q96NY7-2
4         | Q96NY7-2

以上是在 SQL Server 中使用 STRING_AGG 时如何消除重复项?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn