MODEL
के लिए धन्यवाद सिंटैक्स सुविधा GregV से संकेत Oracle फ़ोरम में
मैं इस प्रश्न को पोर्नो . की आवश्यकता के बिना वास्तव में बहुत छोटा और सटीक लिख सकता था . बढ़िया!
तो आसानी से मेरे नमूना कोड और कम से कम 10g . के साथ अंतर की जांच करने के लिए Oracle db आपको बस उपरोक्त लिंक की गई मूल स्क्रिप्ट को निम्न तरीके से संशोधित करने की आवश्यकता है:
/**************************
* the original sample query base data
***************************/
... -- all content before the last select of the original example-SQL
/**************************
* the original sample porno-query
***************************/
,agg_porno as (
select
descr,
... -- all the porno-query details
from sum_data_lvl1
/*
DESCR SUM AGG_LVL SUM_ID
---------------------------------- ---------- ------- ------
money available in 2013 33233235.3 1 MA
money spent in 2013 4253235.3 1 MS
money bound to contracts in 2013 34333500 1 MB
money spent 2013 in % of available 12 2 MSP
money bound 2013 in % of available 103 2 MBP
*/
)
/**************************
* the new nice model-based query instead
***************************/
,agg_model as (
select
descr,
trunc(s,1) as sum,
agg_lvl,
sum_id
from sum_data_lvl1
model
dimension by (sum_id)
measures (descr, sum as s, agg_lvl)
rules (
s['MSP'] = s['MS'] / s['MA'] * 100,
s['MBP'] = s['MB'] / s['MA'] * 100
)
)
/*
DESCR SUM AGG_LVL SUM_ID
---------------------------------- ---------- ------- ------
money available in 2013 33233235.3 1 MA
money spent in 2013 4253235.3 1 MS
money bound to contracts in 2013 34333500 1 MB
money spent 2013 in % of available 12.7 2 MSP
money bound 2013 in % of available 103.3 2 MBP
*/
select * from agg_porno where 1=0 -- change to 1=1 to see these results
union all select * from agg_model where 1=1 -- change to 1=0 to hide these results