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

SQL、参加に関する質問

    残念ながら、SQLServerでそれを行う簡単な方法はありません。既知の解決策は次のとおりです。

    • xmlトリック(以下を参照);
    • 変数を使用してデータを蓄積する(複数のグループ行では機能せず、カーソルのみ)。
    • カスタムCLRアグリゲート;

    これがxmlです:

    select
        n.name1,
        stuff(
            (
             select ', ' + p.product
             from prod as p
             where p.id_name = n.id
             for xml path(''),  type).value('.', 'nvarchar(max)')
        , 1, 2, '') as products
    from name as n
    

    sqlフィドルデモ

    ここに変数があります:

    declare @product nvarchar(max), @id int
    
    select @id = 1
    
    select @product = isnull(@product + ', ', '') + product
    from prod
    where id_name = @id
    
    select name1, @product as products
    from name 
    where id = @id
    

    sqlフィドルデモ



    1. MySQLCOALESCEおよびNULLIF関数

    2. クラス出席レコード形式SQLクエリ

    3. Oracleの一時テーブルを選択します

    4. JDBCResultSetのオブジェクトへのマッピング