在 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中文网其他相关文章!