• ベストアンサー

複数行を1行にするSQL

以下のような5つのレコードがあった場合に --- AAAAAAA X AAAAAAA Y AAAAAAA Z BBBBBBB P BBBBBBB Q 以下のように2行に集約して結果を表示したいのですが、どのようなSQL書けばいいでしょうか? --- AAAAAAA X,Y,Z BBBBBBB P,Q X,Y,Zおよび、P,Qは昇順で左からカンマ区切りで1つの項目に出したいです。 やはり、PL-SQLを書かないとだめですかね? SQLに詳しく、ご存知の方がいらっしゃれば、ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.1

select key, ltrim(sys_connect_by_path(col, ','),',') as cols from ( select key, col, row_number() over (partition by key order by col) as num, count(*) over (partition by key) as cnt from tab) where level = cnt start with num = 1 connect by prior key = key and prior num = num - 1;

t29x0479
質問者

お礼

本当にありがとうございます。1行1行、きちんと理解はできていないのですが、必要な部分を書き換えたらうまくいきました。通常の検索SQLでこんなことができるのか、と正直ビックリです。時間のあるときに勉強します。

関連するQ&A