请教游标处理过程中的问题-详见描述
本帖最后由 hk1688 于 2012-11-05 12:47:17 编辑
总体描述:
数据表table_a中有各个公司的数据,版本标识为0,如果是父节点的公司会有另一版本的数据,版本标识为1,我现在需要计算这两个版本的差异(新的公司公司数据:ID在原有几次公司ID前加9即可,版本标识为0),oracle11GR2,用游标处理。一下图解可以简单描述过程。
源数据表
公司ID(unit_id) 版本标识(ver) 数据值(dvalue)
1 1 260
1 0 45
11 0 80
12 1 90
12 0 50
121 0 20
122 0 30
13 0 60
想要结果
公司ID(unit_id) 版本标识(ver) 数据值(dvalue)
1 1 260
1 0 45
11 0 80
12 1 90
12 0 50
121 0 20
122 0 30
13 0 60
912 0 -10 注:=90-(50+20+30)
91 0 -15 注:=260-(45+80+50+20+30+60+(-10))
目前结果
公司ID(unit_id) 版本标识(ver) 数据值(dvalue)
1 1 260
1 0 45
11 0 80
12 1 90
12 0 50
121 0 20
122 0 30
13 0 60
912 0 -10
91 0 -25 注:=260-(45+80+50+20+30+60)也就是说,没有把游标第一次算出来的数据"-10"算进去。
以下就是处理过程:
procedure proc1 is
v_unit_id varchar2(100);
--定义游标
cursor c1 is
select t.unit_id
from table_a t
where t.ver = 1
order