Maison >base de données >tutoriel mysql >Comment obtenir des valeurs distinctes en utilisant STRING_AGG dans SQL Server ?

Comment obtenir des valeurs distinctes en utilisant STRING_AGG dans SQL Server ?

DDD
DDDoriginal
2025-01-03 19:52:40197parcourir

How to Get Distinct Values Using STRING_AGG in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn