数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

利用Oracle10g的MODELSQL进行行间计算(二)


发布日期:2019年12月21日
 
利用Oracle10g的MODELSQL进行行间计算(二)

规则也可以是多个维度不同取值本例假定不同年份之间比较比如要求年的=年的+

SELECTyearcode

p_idv

FROMt_

WHEREcodeIN()

MODELRETURNUPDATEDROWS

PARTITIONBY(code)

DIMENSIONBY(p_idyear)

MEASURES(v)

RULES(

v[err]=v[]+v[]v[])

ORDERBYcodep_id;

YEARCODEP_IDV

err

err

如果年份很多每个年份都是和上年比较这种描述可以用CV()函数简化

SQL>insertintot_selectyearcodep_idvvfromt_;

SELECTyearcode

p_idv

FROMt_

WHEREcodeIN()

MODELRETURNUPDATEDROWS

PARTITIONBY(code)

DIMENSIONBY(p_idyear)

MEASURES(v)

RULES(

v[errforyearin()]=v[CV(year)]+v[CV(year)]v[CV(year)])

ORDERBYcodep_id;

YEARCODEP_IDV

err

err

err

err

如果year是数值类型还可以用for year from to increment 的语法如果是其他类型还可以用在in子句带子查询的办法

比如for year in (select year from t_)

但需要注意不能采用year in 的语法year in的语法只能符号引用已经存在的单元格而v[errx]是新单元格

单个年份的写法如下:

SELECTyearcode

p_idv

FROMt_

WHEREcodeIN()

MODELRETURNUPDATEDROWS

PARTITIONBY(code)

DIMENSIONBY(p_idyear)

MEASURES(v)

RULES(

v[err]=v[CV()]+v[CV()]v[CV()])

ORDERBYcodep_id;

YEARCODEP_IDV

err

err

SELECTyearcode

p_idv

FROMt_

WHEREcodeIN()

MODELRETURNUPDATEDROWS

PARTITIONBY(code)

DIMENSIONBY(p_idyear)

MEASURES(v)

RULES(

v[erryearin()]=v[CV()]+v[CV()]v[CV()])

则返回

               

上一篇:oracle树形结构实行查询

下一篇:关于使用RMAN进行clone数据库二