Oracle 11g学习笔记–model子句
oracle 10g中新增的model子句可以用来进行行间计算。model子句允许像访问数组中元素那样访问记录中的某个列,这就提供了诸如电子表格计算之类的计算能力;
先来看一个简单的例子:
select
prd_type_id, year, month, sales_amount
from all_sales
where prd_type_id between 1 and 2 and emp_id = 21
model
partition by (prd_type_id)
dimension by (month, year)
measures (amount sales_amount) (
sales_amount[1, 2004] = sales_amount[1, 2003],
sales_amount[2, 2004] = sales_amount[2, 2003] + sales_amount[3, 2003],
sales_amount[3, 2004] = round(sales_amount[3, 2003] * 1.25, 2)
)
order by prd_type_id, year, month;
partition by(prd_type_id)指定结果是根据prd_type_id分区的,所谓的分区就是在prd_type_id不等的情况下,一下的定义数组是互相不能访问的;
dimension by(month, year) 定义数组的维数是month, year,这就意味着必须