首页 >数据库 >mysql教程 >如何在 SQL Server 中使用 STRING_AGG 获取唯一的逗号分隔值?

如何在 SQL Server 中使用 STRING_AGG 获取唯一的逗号分隔值?

Linda Hamilton
Linda Hamilton原创
2025-01-03 10:22:39891浏览

How to Get Unique Comma-Separated Values Using STRING_AGG in SQL Server?

在 SQL Server 中使用 STRING_AGG 获取唯一值

问题:

使用 STRING_AGG 函数,您可以从列中检索逗号分隔的值。但是,结果可能包含重复项。如何仅获取输出中的唯一值?

查询:

以下查询使用 STRING_AGG 来获取唯一值:

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

解释:

独特子查询中的关键字消除结果集中的重复值。 CROSS APPLY 运算符使用 STRING_SPLIT 函数将 bID 列拆分为单独的值。然后 STRING_AGG 函数将这些值连接成一个逗号分隔的字符串,ORDER BY 子句确保这些值在连接之前进行排序。

输出:

最终输出仅显示每个 ProjectID 的唯一值:

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

以上是如何在 SQL Server 中使用 STRING_AGG 获取唯一的逗号分隔值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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