9

この形式のテーブル値があります

sam
jack
sam
john

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

個別の値を取得するにはどうすればよいですか

sam,jack,john

このような。

4

6 に答える 6

23

selectステートメントをsubselectにラップし、結果に合体を適用できます。

Declare @name varchar(max) 

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

これは、SQL Serverの文書化されていない機能を使用して、結果を1つの文字列に連結することに注意してください。私はもうそれへのリンクを見つけることができませんが、あなたがこの振る舞いに頼るべきではないことを読んだことを思い出します。

より良い代替策は、FOR XML構文を使用して連結された文字列を返すことです。SOで検索すると、例として使用できる複数の結果が返されます。

于 2012-07-13T09:28:12.450 に答える
3

どうぞ

Declare @name varchar(max) 
select 
    @name = COALESCE(@name + ', ','')+name from (select distinct user_email 
from 
    PostedCommentMaster) as t
where 
    article_id = @id
于 2012-07-13T09:27:53.563 に答える
2

group by一意の値に使用できます。

Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email 
from   PostedCommentMaster where article_id = @id 
group by user_email
于 2015-09-09T07:25:05.950 に答える
0

SELECT 個別の @name = COALESCE(@name + ', ','')+ PostedCommentMaster からの user_email で、article_id = @id

于 2018-12-03T18:18:54.740 に答える