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

SQLServerで複数の行を1つのコンマ区切り値に

    テストデータ

    DECLARE @Table1 TABLE(ID INT, Value INT)
    INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400)
    

    クエリ

    SELECT  ID
           ,STUFF((SELECT ', ' + CAST(Value AS VARCHAR(10)) [text()]
             FROM @Table1 
             WHERE ID = t.ID
             FOR XML PATH(''), TYPE)
            .value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
    FROM @Table1 t
    GROUP BY ID
    

    結果セット

    ╔════╦═════════════════════╗
    ║ ID ║     List_Output     ║
    ╠════╬═════════════════════╣
    ║  1 ║  100, 200, 300, 400 ║
    ╚════╩═════════════════════╝
    

    SQLServer2017以降のバージョン

    SQL Server 2017以降のバージョンで作業している場合は、組み込みのSQL Server関数STRING_AGGを使用して、コンマ区切りのリストを作成できます。

    DECLARE @Table1 TABLE(ID INT, Value INT);
    INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400);
    
    
    SELECT ID , STRING_AGG([Value], ', ') AS List_Output
    FROM @Table1
    GROUP BY ID;
    

    結果セット

    ╔════╦═════════════════════╗
    ║ ID ║     List_Output     ║
    ╠════╬═════════════════════╣
    ║  1 ║  100, 200, 300, 400 ║
    ╚════╩═════════════════════╝
    



    1. SQLServerデータベース内のすべてのユーザー定義関数を返す2つの方法

    2. SQLDev4.2トップSQL

    3. varcharまたはintの主キーを使用してテーブルを設計する必要がありますか?

    4. MicrosoftAccessのデータソースとしてテキストまたはExcelを開くまたはリンクする