2017-03-04 18 views
0

すべての犬にとって、私は犬以外の他の動物と一致する名前を見つけてカンマ区切りのリストに追加したいと思います。下記の表とクエリの望ましい結果の画像:listagg Oracle SQLクエリー、同じテーブルで結合

の表に、この構造に存在します。 enter image description here

そして、私のような結果にクエリを作成したいと思います:あなたが使用することができます enter image description here

+0

お読みくださいhttp://meta.stackoverflow.com/questions/285551/why-may-i-not-upload - 質問の際のコードの画像/ 285557と受け入れられた回答 –

答えて

0

self-join、次にlistagg

select tdog.animal,tdog.name 
,listagg(tother.animal||'-'||tother.name||'-'||tother.id) within group(order by tother.id) 
from tablename tdog 
join tablename tother on tdog.name=tother.name and tdog.animal='dog' and tother.animal <> 'dog' 
group by tdog.animal,tdog.name 
0

いくつかのトリックを使用すると、必要のないself join

select 'dog' as animal, name, 
     listagg(case when animal <> 'dog' then animal || '-' || name || '-' || id 
       end), ',') within group (order by id) as animals 
from t 
group by name 
having sum(case when animal = 'dog' then 1 else 0 end) > 0 
関連する問題