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
Libérer: 2025-01-03 19:52:40
original
222 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal