トップページに戻る    次のmodel句のサンプルへ

model句01 HelloWorld

SQL

select ArrValue,soeji
  from (select 'abcdefghijklmn' as ArrValue,1 as soeji from dual)
 model
 dimension by (soeji)
 measures(ArrValue)
 rules(ArrValue[1] = 'Hello World');

ArrValue     soeji
-----------  -----
Hello World      1


select ArrValue,soeji from (select 'abcdefghijklmn' as ArrValue,1 as soeji from dual) model dimension by (soeji) measures(ArrValue) rules(ArrValue[1] = 'Hello World', ArrValue[2] = 'Hello Model'); ArrValue soeji ----------- ----- Hello World 1 Hello Model 2
select ArrValue,soeji from (select 'abcdefghijklmn' as ArrValue,1 as soeji from dual) model dimension by (soeji) measures(ArrValue) rules(ArrValue[3] = 'Hello Oracle'); ArrValue soeji -------------- ----- abcdefghijklmn 1 Hello Oracle 3


解説

Oracle10gより追加されたmodel句のサンプルを取り上げていきます。

結果セットを脳内でイメージするのは、普段のSQLでやってることですが
model句は、それに加えて、多次元配列(多次元ベクトル)も脳内でイメージするといいでしょう。

どんな時にmodel句を使うかとなると、
・集計行の追加
・行列変換
・前後の行の値を使った計算
・RegExp_Replace関数の繰り返し実行
・総積を求める
・wmsys.wm_concatの代用
・count(distinct Val) over(order by SortKey)の代用
のようなSQLを作成する時ですかね。


model句に関連した情報

分析関数とmodel句の「第2部 model句」
Oracle ACEのLaurent Schneiderさんの本

OTN-Japanのマニュアル
モデリングのSQL
モデル式
Oracle Database 10g の SQL MODEL句(PDF)

SQL Snippets
SQL Features Tutorials: MODEL Clause

US-OTNのmodel句を使ったスレッド
help with select/update?
Insert problem
Multi-Rows from DUAL
kind of sequential query
how can i get this result....??(accumulation distinct count)
Analytic functions - help needed
Grouping looking into previous group in one query... analythics help ?
wm_concat(column_name) order by
distinctした結果とpartitioned Anti Join
Does anyone have some wizzy code or bright ideas?
列値を昇順にソート