web-dev-qa-db-ja.com

SQL Server 2008で多くの行を1つの文字列に連結する方法は?

多くの行を1つの文字列に連結する方法は?

クエリ:

SELECT name FROM mytable;

結果:

name
----
kim
lee
park
cho

ただ欲しい。

name
----
kim,lee,park,cho

不可能な?

10
chobo

これを試してください-

DECLARE @temp TABLE (name NVARCHAR(50))

INSERT INTO @temp (name)
VALUES ('kim'),('lee'),('park'),('cho')

SELECT STUFF((
    SELECT ',' + name
    FROM @temp
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')

出力-

kim,lee,park,cho
40
Devart

私は今朝、似たようなことに取り組んでいます。ケースを追加すると、返された1行でも機能します。お役に立てれば。そうでない場合は、最初のコメントから送られたリンクをたどってください。

Declare @NameList VarChar(MAX) = ''    
select @NameList = 
    case when @NameList = ''
        then coalesce(Name, '')
        else @NameList + coalesce(',' + Name, '')
    end
from mytable
print @NameList 

ベン

10
Ben Barter

これを試して

 SELECT   
name= substring((SELECT ( ', ' + Name)
                       FROM TableName t
                       FOR XML PATH( '' )
                      ), 3, 1000 )  FROM mytable tn
8
Amit