- ベストアンサー
複数行を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に詳しく、ご存知の方がいらっしゃれば、ご教授願います。
- みんなの回答 (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;
お礼
本当にありがとうございます。1行1行、きちんと理解はできていないのですが、必要な部分を書き換えたらうまくいきました。通常の検索SQLでこんなことができるのか、と正直ビックリです。時間のあるときに勉強します。