Maison >base de données >tutoriel mysql >Comment obtenir des valeurs uniques dans une chaîne séparée par des virgules à l'aide de STRING_AGG de SQL Server ?
Obtenir des valeurs uniques à l'aide de STRING_AGG et DISTINCT dans SQL Server
La fonction SQL Server STRING_AGG, introduite dans SQL Server 2017, vous permet d'agréger chaînes de plusieurs lignes en une seule chaîne séparée par des virgules. Cependant, lorsqu'il est utilisé avec STRING_SPLIT pour séparer les valeurs dans un champ séparé par des virgules, cela peut entraîner des valeurs en double dans la chaîne agrégée.
Pour obtenir des valeurs uniques dans la chaîne agrégée, vous pouvez améliorer votre requête en utilisant l'option Mot-clé DISTINCT dans une sous-requête. La requête modifiée est :
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
Dans cette requête améliorée :
Le résultat de cette requête modifiée sera :
ProjectID NewField ------------------------------- 2 O95833, Q96NY7-2 4 Q96NY7-2
Cela vous donne le résultat souhaité, avec des valeurs uniques agrégé à l'aide de STRING_AGG.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!