1. ホーム
  2. sql-server

SQLでのカンマ区切りの結果

2023-08-14 19:27:13

質問

私は、私の結果のためのカンマ区切りリストを作成する次のコードを持っています。

DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+', ' ,'') + INSTITUTIONNAME
FROM EDUCATION
WHERE STUDENTNUMBER= '111'
SELECT @listStr

問題は、1つの巨大なカンマ区切り行を作成することです。私はそれが行ごとにカンマで区切られたリストを返すようにする必要があります。

ですから、もし Simon が2つの機関の一部であった場合、私は期待します。

"INSTITUTION1, INSTITUTION2"

where句を指定しなかったので、データベースの各行に対してこのような結果が表示されると思います。

どのように解決するのですか?

使用方法 FOR XML PATH('') - というように、エントリーをカンマ区切りの文字列に変換しているものと STUFF () -これは最初のカンマを切り捨てます。

SELECT  STUFF((SELECT  ',' + INSTITUTIONNAME
            FROM EDUCATION EE
            WHERE  EE.STUDENTNUMBER=E.STUDENTNUMBER
            ORDER BY sortOrder
            FOR XML PATH(''), TYPE).value('text()[1]','nvarchar(max)')
           , 1, LEN(','), '') AS listStr

FROM EDUCATION E
GROUP BY E.STUDENTNUMBER

ここでは FIDDLE