Comment puis-je get des valeurs distinctes dans COALESCE ()

J'ai des valeurs de table dans ce format

sam jack sam john Declare @name varchar(max) select @name = COALESCE(@name + ', ','')+ user_email from PostedCommentMaster where article_id = @id 

Comment puis-je get une valeur distincte

 sam,jack,john 

comme ça.

Vous pouvez envelopper l'instruction select dans une sous-sélection et appliquer une coalescence sur les résultats.

 Declare @name varchar(max) select @name = COALESCE(@name + ', ','') + user_email from (select distinct user_email from PostedCommentMaster where article_id = @id) pc 

Notez que cela utilise une fonctionnalité non documentée de SQL Server pour concaténer les résultats dans une string. Bien que je ne puisse plus find de lien, je me souviens avoir lu que vous ne deviez pas vous fier à ce comportement.

Une meilleure alternative serait d'utiliser la syntaxe FOR XML pour renvoyer une string concaténée. Une search sur SO renvoie plusieurs résultats que vous pouvez utiliser comme exemple.

Voici

 Declare @name varchar(max) select @name = COALESCE(@name + ', ','')+name from (select distinct user_email from PostedCommentMaster) as t where article_id = @id 

Vous pouvez utiliser group by pour des valeurs uniques.

 Declare @name varchar(max) select @name = COALESCE(@name + ', ','')+ user_email from PostedCommentMaster where article_id = @id group by user_email