プロが教える店舗&オフィスのセキュリティ対策術

以下のような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に詳しく、ご存知の方がいらっしゃれば、ご教授願います。

A 回答 (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;
    • good
    • 4
この回答へのお礼

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

お礼日時:2012/02/11 18:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す