规则也可以是多个维度不同取值本例假定不同年份之间比较比如要求年的=年的+
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()])
则返回行