SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Oracleのmodel句

Oracleのmodel句(2)
(行の補完)

rules句の繰り返し機能

ダウンロード SourceCode (1.1 KB)

2. 期間内の日付一覧の作成

 前問では数値型の連番を作成したので、今度は日付型の連番として、2010年5月10日から2010年5月15日までの連番を作成してみます。

増分値の指定で数値型を使用
select to_char(soeji,'yyyy-mm-dd') as dayVal
  from dual
 model
dimension by(date '2010-05-10' as soeji)
measures(0 as dummy)
rules(
dummy[for soeji from date '2010-05-10' to date '2010-05-15'
      INCREMENT 1]=0);
出力結果
dayVal
2010-05-10
2010-05-11
2010-05-12
2010-05-13
2010-05-14
2010-05-15

 処理のイメージを解説すると、まず、model句のdimension by(date '2010-05-10' as soeji)measures(0 as dummy)によって、date型のsoejiを添字として、0を要素名dummyとして持つ配列を用意してます。

 プログラム言語の配列には、添字に数値型しか指定できないものがありますが、model句のdimension by句では、数値型や日付型や文字型を使用できます。

 次に、model句のrules句でのdummy[for soeji from '2010-05-10' to '2010-05-15' INCREMENT 1]=0によって、soejiを添字とした配列の、添字の2010-05-10,2010-05-11,2010-05-12,2010-05-13,2010-05-14,2010-05-15のdummyに0をupsert(あればupdate,なければinsert)してます。

 SQLのイメージは、下のようになります。dimension by(date '2010-05-10' as soeji)に対応する配列の添字を紫色で表現してます。

SQLのイメージ
SQLのイメージ

増分値の指定でInterVal型を使用

 下記のように、増分値の指定でInterVal型を使用することもできます。もちろん、InterVal '5' minuteInterVal '1' hourなどといった使い方もできます。

増分値の指定でInterVal型を使用
select to_char(soeji,'yyyy-mm-dd') as dayVal
  from dual
 model
dimension by(date '2010-05-10' as soeji)
measures(0 as dummy)
rules(
dummy[for soeji from date '2010-05-10' to date '2010-05-15'
      INCREMENT InterVal '1' day]=0);

次のページ
3. 空き番号一覧の作成

この記事は参考になりましたか?

Oracleのmodel句連載記事一覧
この記事の著者

山岸 賢治(ヤマギシ ケンジ)

趣味が競技プログラミングなWebエンジニアで、OracleSQLパズルの運営者。AtCoderの最高レーティングは1204(水色)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5154 2010/05/28 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー