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

表1からすべての列を選択し、?でグループ化された表2から1つの列を選択します。

    listagg()を使用します サブクエリ内:

    select t1.*, xmlagg
    from table1 t1 join
         (select name2, listagg(mother_name, ',') within group (order by mother_name) as xmlagg
          from table2 t2
          group by name2
         ) t2
         on t1.name1 = t2.name2;
    

    編集:

    上記のクエリは結合前に集計を行うため、t1.*を使用できます。 。参加後に行うこともできます:

    select t1.name, listagg(mother_name, ',') within group (order by mother_name)
    from table1 t1 join
         table2 t2
         on t1.name1 = t2.name2
    group by t1.name;
    

    このフォームでは、selectに列を追加するのが難しくなります 、ただし、好きなもので集計できます。




    1. Hibernate:varcharを返すストアド関数を呼び出す方法は?

    2. カテゴリとサブカテゴリを表示するにはどうすればよいですか?

    3. SQLServerでセッションのANSI_NULLS設定を確認する方法

    4. クラウドテクノロジーに関する4つの一般的な神話