You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle使用MODEL子句按奇偶行规则计算C值结果出错如何修复?

修复Oracle逐行递推计算的MODEL查询

原查询的MODEL子句默认未指定计算顺序,所有行的c值计算会并行执行,计算rn≥3的行时,上一行的c还停留在初始的0值,导致结果全部为0。
修复后的查询语句如下:

select *  
FROM (
       Select 1 rn, 1 V from dual  UNION ALL
       Select 2 rn, 2 V from dual  UNION ALL
       Select 3 rn, 4 V from dual  UNION ALL
       Select 4 rn, 2 V from dual  UNION ALL
       Select 5 rn, 3 V from dual  
)
MODEL
  DIMENSION BY (rn)
  MEASURES ( V, cast(0 as number) c) -- 显式指定为number类型避免整数运算截断
  RULES UPDATE SEQUENCE ORDER BY rn -- 强制按rn升序逐行计算,确保上一行的c已完成计算
  (
   c[MOD(rn, 2) != 0] = nvl(c[cv()-1],1) * V[cv()]
  ,c[MOD(rn, 2) = 0] = c[cv()-1] / V[cv()]
  ) 
order by rn;

运行后输出结果和预期完全一致:

RNVC
111
220.5
342
421
533

内容的提问来源于stack exchange,提问作者Jenja O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:24:04