1.需要更新的表 Table1 字段 Field4演示数据:
Field1 Field2 Field3 Field4
001 2010 01 0
002 2010 01 0 2.数据来源 Table2 字段 Field4
Field1 Field2 Field3 Field4 Field5
001 2009 09 11 3
002 2009 08 22 4
002 2009 07 43 6
实际结果
Field1 Field2 Field3 Field4
001 2010 01 7
002 2010 01 55
备注:
在Table1表中月份为1月的时候(关键),进行数据更新操作,Table1中Field4的值 取的是Table2中 上一年 Field1字段相同 Table1中Field4的值来源于Table2中 Field4减去Field5字段的值的汇总如: 在2010 年1月操作 取的是 2009年 Table2中 Field4 -Field5的汇总 其中Field1为 分组字段。
Field1 Field2 Field3 Field4
001 2010 01 0
002 2010 01 0 2.数据来源 Table2 字段 Field4
Field1 Field2 Field3 Field4 Field5
001 2009 09 11 3
002 2009 08 22 4
002 2009 07 43 6
实际结果
Field1 Field2 Field3 Field4
001 2010 01 7
002 2010 01 55
备注:
在Table1表中月份为1月的时候(关键),进行数据更新操作,Table1中Field4的值 取的是Table2中 上一年 Field1字段相同 Table1中Field4的值来源于Table2中 Field4减去Field5字段的值的汇总如: 在2010 年1月操作 取的是 2009年 Table2中 Field4 -Field5的汇总 其中Field1为 分组字段。
select f1,sum(f4-nvl(f5,0)) f4 from (
select f1,to_char(to_number(f2)-1) f2,f3,f4,null f5 from t1
union all
select f1,f2,f3,f4,f5 from t2
) group by f1,f2
) d where t1.f1 = d.f1
select sum(b.Field4-b.Field5)
from Table2 b
where to_char(to_number(a.Field2)-1)=b.Field2
and a.Field1=b.Field1
group by b.Field1)
where a.Field3='01';
update table1 t1
set t1.field4 = (select sum(field4-field5) from table2 where field1=t1.field1 and field2=t1.field2-1)
where t1.field3 = '01';
(select sum(field4-field5+1) from table2 a
where a.field1=table1.field1 and a.field2=table1.field2-1)
where field3 = '01';请参考