スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

グルーピングしたレコードの特定列の連結

テーブルに格納されているレコードを特定キーごとにグルーピングして、そのグルーピングしたレコードの特定列を連結した結果をSELECT文1発で取得したいという話がありました。
言葉にすると難解なのですが、要は以下のようなことです。

【テーブル:A】
ID  SEQ NAME
--- ---- --------
 1   1  東急
 1   2  大井町
 1   3  線
 2   1  東京
 2   2  メトロ
 2   3  銀座
 2   4  線

【取得したい結果】
ID  NAME
--- --------
 1 東急/大井町/線
 2 東京/メトロ/銀座/線


集合関数(SUM、COUNT等)の一つとして、こんなことが実現できるのがあってもおかしくない気がするけど、見当たりませんでした。
でも、XML関連の(集合)関数を利用すれば、何とか以下のSQL文で実現できました。
---------------------------------------------------------------------------
select
id,
RegExp_Replace(replace(XMLAgg(XMLElement("NAME", name) order by id, seq), '</NAME><NAME>', '/'), '</?NAME>')
as NAME
from A
group by id
order by id;
---------------------------------------------------------------------------
Oracleさん、わざわざXML要素を追加しなくても、列を連結した結果を返してくれる集合関数を次期バージョン(11g?12g?)で提供して下さい。


ようやくOracleから、改めて個別パッチが提供されました。
今回のパッチに更なる不具合がないことを祈りつつ、ODP.NET+DBリンクには気をつけろ!!!
関連記事
スポンサーサイト

この記事へのコメント

Re:グルーピングしたレコードの特定列の連結(03/19) - こいぬ~ - 2008年03月23日 02:14:37

お助けしてくれて、ありがとでした~。
あとはパフォーマンスでふね。
用途はありそうなので標準関数にしてほしい。。

反面、グルーピングするカラムを意識しとかないと、果てしない文字長になるリスクがありますね・・。

トラックバック

URL :

プロフィール

あんま覚えてへんわ


「あんま覚えてへんわ」です。

最新記事
最新コメント
月別アーカイブ
カテゴリ

openclose

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
ブログ内検索

アクセス数
アクセスランキング
[ジャンルランキング]
日記
7833位
アクセスランキングを見る>>

[サブジャンルランキング]
会社員・OL
1508位
アクセスランキングを見る>>

天気予報
QRコード
QR
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。