Maison >base de données >tutoriel mysql >Comment obtenir des valeurs distinctes en utilisant STRING_AGG dans SQL Server ?
Valeurs distinctes utilisant STRING_AGG dans SQL Server
La fonction STRING_AGG dans SQL Server 2017 vous permet de concaténer des valeurs en une seule chaîne. Cependant, elle peut renvoyer des valeurs en double lors de la concaténation d'un champ avec plusieurs occurrences.
Considérez la requête suivante :
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
Cette requête renvoie les valeurs concaténées, mais les doublons sont inclus :
ProjectID | NewField |
---|---|
2 | O95833,O95833,O95833,Q96NY7-2,Q96NY7-2,Q96NY7-2 |
4 | Q96NY7-2,Q96NY7-2 |
Pour récupérer uniquement les valeurs uniques, utilisez le mot-clé DISTINCT dans un sous-requête :
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
Cette sous-requête supprime les doublons avant d'appliquer la fonction STRING_AGG. Le résultat final est :
ProjectID | NewField |
---|---|
2 | O95833, Q96NY7-2 |
4 | Q96NY7-2 |
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!