雑記の過去ログを閲覧できます。
また、過去ログへのコメントの投稿も可能です。

月 
 (雑記全体から検索します)
一ヶ月前へ 今月へ 一ヶ月後へ

コメント投稿モードです。画面下のコメント投稿フォームより下記の雑記に対するコメントを投稿できます。


2009-12-22(Tue) 【備忘録】 OracleのXML関数を使ってみる

とある要件で、小一時間悩んだので備忘録を兼ねて Oracle の XML 関数について書いてみる。

そもそもハマった要件というのが、複数のレコードの任意のカラムを1レコードの1カラムにカンマ区切りで納めて出力したい、というもの。
具体的に言うと、例えば以下のようなテーブルがあったとして・・・

ID   |SEND_DATE     |ITEM
1    |2009/12/22    |りんご
2    |2009/12/22    |みかん
3    |2009/12/23    |かき
4    |2009/12/23    |いちご


以下のように日付ごとにグループ化したい。

SEND_DATE     |ITEMS
2009/12/22    |りんご,みかん
2009/12/23    |かき,いちご


グループ化といえばグループ関数がありますが、どうにもよくあるグループ関数では実現できそうにないので、いろいろ調べていたのです。
結局のところ、Oracle 専用になってしまいますが、XML 関数を使用すればなんとかなりました。
以下がその SQL 文。やや強引な感じもしますが(苦笑
SELECT
    SEND_DATE,
    -- 最初のカンマを落とす
    SUBSTR(ITEMS, 2) AS ITEMS
FROM
(
    -- カンマ区切りでグループ化するサブクエリ
    SELECT
        I.SEND_DATE,
        REPLACE(
            REPLACE(
                XMLAgg(
                    XMLColAttVal(ITEM)
                ), '', ','
            , '' '')
        ) AS ITEMS
    FROM
        ITEM I
    GROUP BY
        I.SEND_DATE
)


REPLACE関数が二つに、XML関数も二つ使用しているので、レコード数によっては激重なので注意が必要です。
XMLColAttVal関数によって、カラム内容を XML インスタンス化し、それを XMLAgg 関数によって1行にグループ化しています。

もっといいやり方あるよー、等ありましたら是非教えて頂ければ、と思います。
コメント(2) カテゴリー:Oracle 最終更新日:2010/01/20 21:55:21 page toptop

informationinformation

Studio Misty(以下、当サイト)はYossy(響那 良)(以下、私)が制作したオリジナル楽曲・アレンジ楽曲を公開しているサイトです。

主にシンセサイザーを用いたテクノ・トランス系の楽曲を制作しています。
また、同人・商業にてオリジナル曲・ゲーム音楽の制作も行っています。

newnew release
BiRD
Genre : Rock
Release : 2010/05/16
DL : muzie / MP3 (DL:3887)
Listen :  BiRD
Mind Synthesis
Genre : Trance
Release : 2010/05/04
DL : muzie / MP3 (DL:17882)
Listen :  Mind Synthesis
Angelic Break Beats
Source : Angel Beats!
Release : 2009/12/31
DL : MP3 (DL:230657)
Listen :  Angelic Break Beats

詳細は Musicページ にて。
気に入って頂けましたら、
muzie にて、投票していただければ幸いです。

試聴は楽曲を1分程度にクロスフェード加工したものです。またサイズ低減のため音質を下げてあります。

twitterTwitter
Twitter Icon
Yossy
@yossy1983
▲Prev ▼Next

historyhistory
2010/05/16
「BiRD」公開
2010/05/04
「Mind Synthesis」公開
2010/02/27
Works更新
2010/02/12
Works更新
2009/12/31
「Angelic Break Beats」公開
2009/10/02
Works更新
2009/09/25
「Reflexion」公開
2009/07/12
Note更新
さくらさくら Original Sound Track
2009/03/17
Works更新
2009/02/01
「Journey in the Little Cup」公開
2008/11/15
「時を刻む唄 -Orchestral-」公開
2008/09/08
「雨のち晴れ-Orchestral-」公開
2008/08/31
「Saya's Song -Orchestral-」公開
2008/08/23
「Machina -マキナ-」公開
2008/08/02
「ミズノトシ」公開
2008/06/08
Works更新
2008/03/12
Works更新
2008/01/13
「Little Busters -Brass Style- feat. VOCALOIDs」公開
2007/12/22
「It's A Funny Day」公開
2007/09/09
「戻る時、進む世界」公開

RSSのアドレスはこちら

workworks

現在の活動・提供先(敬称略)

ひとなつの
ひとなつの
発売(予定) : 2010年
メーカー:ハイクオソフト

音楽担当として参加します。
GWAVE2009 1st Ace
GWAVE2009 1st Ace
発売(予定) : 2010年03月26日
メーカー:IMA ENTERTAINMENT

PCゲーム主題歌コンピレーション。
「さくらさくら」(ハイクオソフト)のOP主題歌「see-saw!!」が収録されます。

楽曲提供のご依頼はMailメールにて相談を承っていますのでお気軽にどうぞ。
詳しくは Works ページをご覧ください。

commentrecent comments
messagemessage

一言メッセージ、ご意見・ご感想、ツッコミなどはこちらのメールアドレスまでどうぞ。
E-Mail

Linkabout link

当サイトはリンクフリー・アンリンクフリーです。
ご自由にリンクを張って頂いてorはずして頂いてOKです。
連絡等は特に必要ありません。
基本的に以下のアドレス、必要であればバナーをご使用ください。

サイト名
Studio Misty
URL
http://studio-misty.com/
バナー(直リンク可)
Studio Mistyバナー
http://studio-misty.com/img/banner.png

readmereadme
お約束ごと
当サイトにあるコンテンツの著作権はYossyが有します。
楽曲および画像データの無断転載・改変等行わないようにお願いします。
楽曲の使用・転載に関して
当サイトに掲載されている楽曲をFlash・動画データ・サイト等に転載・利用する際は、私宛にメールでご連絡下さい。
メールの送信はMailこちらからどうぞ。
動作確認ブラウザ
Internet ExplorerInternet Explorer 8.0
FirefoxFirefox 2.0
OperaOpera 9.0
SafariSafari 3.0
Google ChromeGoogle Chrome 3.0
CSS2.0、Javascript使用
試聴を利用するためには最新の Flash プレイヤーが必要です。
その他
当サイトは W3C XHTML Validator および、 W3C CSS Validator にてチェックされています。
Valid XHTML 1.1 Valid CSS!