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为 分组字段。

解决方案 »

  1.   

    update Table1 a set a.Field4= (select sum(b.Field3-b.Field4) from Table2 b where a.Field2-1=b.Field2 and a.Field1=b.Field1 group by b.Field1)
      

  2.   

    update t1 set f4 = (
    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
      

  3.   

    update Table1 a set a.Field4= (
    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';
      

  4.   


    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';
      

  5.   

    update table1 set field4=
    (select sum(field4-field5+1) from table2 a
    where a.field1=table1.field1 and a.field2=table1.field2-1)
    where  field3 = '01';请参考