在 SQL Server 中使用 STRING_AGG 的不同值
SQL Server 2017 中的 STRING_AGG 函数允许您将值连接到单个字符串中。但是,当连接多次出现的字段时,它可能会返回重复值。
考虑以下查询:
SELECT ProjectID, STRING_AGG( 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
此查询返回连接的值,但包含重复值:
ProjectID | NewField |
---|---|
2 | O95833,O95833,O95833,Q96NY7-2,Q96NY7-2,Q96NY7-2 |
4 | Q96NY7-2,Q96NY7-2 |
要仅检索唯一值,请在子查询:
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
此子查询在应用 STRING_AGG 函数之前删除重复项。最终结果是:
ProjectID | NewField |
---|---|
2 | O95833, Q96NY7-2 |
4 | Q96NY7-2 |
以上是如何在 SQL Server 中使用 STRING_AGG 获取不同的值?的详细内容。更多信息请关注PHP中文网其他相关文章!