web-dev-qa-db-ja.com

グループ化により、多くの行を単一のテキスト文字列に連結します

次の表があります:tblFile

tblFile

私の望ましい出力:

enter image description here

多くの行を1つのテキスト文字列に連結しています。ただし、グループ化を正しく行えません。コードは現在、FileNameStringフィールドの各レコードに対して表示されます:AAA、BBB、CCC、DDD、EEE、FFF

グループ化に関する提案!

SELECT FileID, Stuff(
(SELECT     N', ' + CONVERT(Varchar, FileName) 
FROM         tblFile  FOR XML PATH(''),TYPE )
.value('text()[1]','nvarchar(max)'),1,2,N'')AS FileNameString 
From tblFile
GROUP BY FileID
13
user1783736

これを試して -

SELECT DISTINCT
      fileid
    , STUFF((
        SELECT N', ' + CAST([filename] AS VARCHAR(255))
        FROM tblFile f2
        WHERE f1.fileid = f2.fileid ---- string with grouping by fileid
        FOR XML PATH (''), TYPE), 1, 2, '') AS FileNameString
FROM tblFile f1
18