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