sql >> データベース >  >> RDS >> Sqlserver

SQLで同じIDを持つ多くの行を連結するにはどうすればよいですか?

    SQL-Server 次の方法で実行できます:

    クエリ

    SELECT id, displayname = 
        STUFF((SELECT DISTINCT ', ' + displayname
               FROM #t b 
               WHERE b.id = a.id 
              FOR XML PATH('')), 1, 2, '')
    FROM #t a
    GROUP BY id
    

    テストデータ

    create table #t 
    (
    id int,
    displayname nvarchar(max)
    )
    
    insert into #t values    
     (1 ,'Editor')
    ,(1 ,'Reviewer')
    ,(7 ,'EIC')
    ,(7 ,'Editor')
    ,(7 ,'Reviewer')
    ,(7 ,'Editor')
    ,(19,'EIC')
    ,(19,'Editor')
    ,(19,'Reviewer')
    

    出力

    id  displayname
    1   Editor, Reviewer
    7   Editor, EIC, Reviewer
    19  Editor, EIC, Reviewer
    


    1. 大きな数をサポートする自然順

    2. OracleSQLでタイムスタンプを日付に変換する

    3. SQL Server v.Next:STRING_AGGパフォーマンス、パート2

    4. 重複クエリの最適化パート1:導入と拡張T-SQLソリューション