UPDATE a SET balance=NVL(balance,0)+
(SELECT NVL(SUM(qty*price),0) FROM b WHERE b.suppid=a.suppid);

解决方案 »

  1.   

     
    Update A SET  balance=balance+tmp.total From A ,(select SuppID,Sum(Qty*Price) as total From B Group by suppID) tmp WHERE A.SuppID=tmp.SuppID
     
      

  2.   

    9Thoughts(一片绿洲) , N_chow(一劍飄香) 两位的方法都能实现我的要求但我认为
    9Thoughts 中的 NVL(我用的是SQl server我猜测可能和 Isnull 功能一样)考虑到了空值的情况更严密给所以我给35分。
    N_chow(一劍飄香)使用了导出表稍微有点复杂 给25分。
    两位都是高手,还望以后多多指都。
      

  3.   

    update A set A.balance = A.balance + 
    nvl((select sum(C.sum1) sum2 from 
    (select Qty*Price sum1,B.SuppID id1 from B ) C  where C.id1 = A.SuppID 
    group by C.id1) ,0)