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 ?

Comment obtenir des valeurs uniques dans une chaîne séparée par des virgules à l'aide de STRING_AGG de SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-04 05:28:39311parcourir

How to Get Unique Values in a Comma-Separated String Using SQL Server's STRING_AGG?

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 :

  • La sous-requête (SELECT DISTINCT ProjectID, newId.value FROM [dbo].[Data] WITH (NOLOCK) CROSS APPLY STRING_SPLIT([bID],';') AS newId WHERE newId.value IN ( 'O95833' , 'Q96NY7-2' )) utilise le mot-clé DISTINCT pour supprimer les valeurs en double de l'ensemble de résultats.
  • La fonction STRING_AGG est appliquée aux valeurs distinctes, garantissant que seuls les éléments uniques sont inclus dans la chaîne agrégé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!

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