トップページに戻る
次のmodel句のサンプルへ
前のmodel句のサンプルへ
model句08 having句の次にmodel句が評価される
SQLパズル
Oracle Database 10g のSQL MODEL句の6ページより引用
MODEL句は、最後のORDER BY 以外の、
SELECT文の他の句がすべて処理されてから処理されます。
モデリングのSQLより引用
MODEL句が評価されるのは、SELECT DISTINCT句を除く問合せブロック内のすべての句およびORDER BY句が評価された後です。
SELECTリスト内の句および式は、MODEL句の後に評価されます。
SQL for Modelingより引用
The MODEL clause is evaluated after all clauses in the query block
except SELECT DISTINCT, and ORDER BY clause are evaluated.
These clauses and expressions in the SELECT list are evaluated after the MODEL clause.
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
having句の次にmodel句が評価されるようです。
select ID as Pkey,val
from (select 1 as ID from dual union all
select 1 from dual union all
select 2 from dual union all
select 2 from dual union all
select 2 from dual union all
select 3 from dual union all
select 3 from dual)
where ID in(1,2)
group by ID
having count(*)=2
model
dimension by (ID)
measures(0 as Val)
rules (val[999] = 123)
order by Pkey;
PKEY■Val
----■---
1■ 0
999■123
解説
ちなみに、
model句を使うと、select句で分析関数を使えなくなります。
select ID as Pkey,val,count(*) over() as cnt
from (select 1 as ID from dual)
model
dimension by (ID)
measures(0 as val)
rules (val[1] = 123)
order by Pkey;
行1でエラーが発生しました。
ORA-30483: window functions are not allowed here