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

サブクエリ内の複数の結果を1つのコンマ区切り値に結合します

    これでも目的を果たします

    サンプルデータ

    declare @t table(id int, name varchar(20),somecolumn varchar(MAX))
    insert into @t
        select 1,'ABC','X' union all
        select 1,'ABC','Y' union all
        select 1,'ABC','Z' union all
        select 2,'MNO','R' union all
        select 2,'MNO','S'
    

    クエリ:

    SELECT ID,Name,
        STUFF((SELECT ',' + CAST(T2.SomeColumn AS VARCHAR(MAX))
         FROM @T T2 WHERE T1.id = T2.id AND T1.name = T2.name
         FOR XML PATH('')),1,1,'') SOMECOLUMN
    FROM @T T1
    GROUP BY id,Name
    

    出力:

    ID  Name    SomeColumn
    1   ABC     X,Y,Z
    2   MNO     R,S
    


    1. ログインで要求されたデータベーステストを開くことができません。ログインに失敗しました。ユーザー'xyz\ASPNET'のログインに失敗しました

    2. MySQL REPLACE()–サブストリングのすべてのインスタンスを別のストリングに置き換えます

    3. OracleのREPLACE()関数

    4. BLOB列のテキストを置き換える