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

SQL 2005 の結合結果

    これを行うブラックボックスの方法は、CROSS APPLY と FOR XML PATH を使用することです:

    declare @t table (id int, link_id int, name varchar(max))
    insert into @t select 1, 11, 'test1'
    union all select 2, 11, 'test2'
    union all select 3, 11, 'test3'
    union all select 4, 12, 'test4'
    
    select b.link_id, d.link_names
    from (
        select distinct link_id
        from @t a
    ) b
    cross apply (
        select name + ', ' as [text()]
        from @t c
        where b.link_id = c.link_id
        for xml path('')
    ) d (link_names)
    

    行ごとに、CROSS APPLY が適用されたサブクエリを実行します。この場合、サブクエリは、link_id 11 と 12 に対して 2 回呼び出されます。次に、サブクエリは FOR XML 演算子を悪用して文字列を追加します。

    クエリを実行すると、以下が出力されます:

    11   test1, test2, test3, 
    12   test4, 
    


    1. 結合データからの SQL テーブルの作成

    2. SQLでN番目に大きい要素を見つける

    3. 週ごとにグループ化し、現在の週からレコードを選択します

    4. RubyでOracleストアドプロシージャを実行するにはどうすればよいですか