update m set m.arive=m.arive+IsNULL(n.Quantity,0)
 from test M inner Join test2 n 
   on M.lendID=n.lendID and M.ProID=n.ProID
   where Finishdate=(Select max(Finishdate) from test 
                     where lendID=M.lendID)

解决方案 »

  1.   

    hoho,关键是还要有where条件,结果才是正确的update tablename
    set colname = ..
    from tablename,tablename1
    where condition1,.... --你的更新没有条件,结果铁定不是你想要的
      

  2.   

    to:QQMagicer(在IT的路上越走越远) 谢谢你的解答,但我觉得你说不正确。比如下面一条语句正确,但就没有Where。我觉得是 StockTable c  与上面 的
    (select * from test M where lendID in (select  lendID from test2) and 
    Finishdate=( select max(Finishdate) from test N  where N.lendID=M.lendID)) c
    不同的原因。欢迎高手指教Update StockTable 
    set
    fSurplus=fSurplus+ d.fQuantity
    from
    StockTable c 
    join
    (select fProID,fQuantity from LendFromWHTable
    where fLendID=@LendID and fFinishDate=(Select max(fFinishDate) from LendFromWHTable 
    where fLendID=@LendID))a
    where c.fProID=a.fProID