UPDATE Account  
SET RatingCode=5 
FROM e__ManagementDetail md
left join Account a   
       ON md.c__khmc=a.AccountId
WHERE datediff(yy,md.createdOn,getdate())<=2 
      and exists(select 1 from e__ManagementDetail mt 
                 where mt.c__khmc = md.c__khmc
                 GROUP BY mt.c__khmc 
                 HAVING sum(mt.c__dkje)>=100000)

解决方案 »

  1.   

    或者这样:
    UPDATE Account  
    SET RatingCode=5 
    FROM 
    (
    select md.c__khmc
    from e__ManagementDetail md
    where datediff(yy,md.createdOn,getdate())<=2 
    GROUP BY md.c__khmc 
    HAVING sum(md.c__dkje)>=100000 
    ) md
    left join Account a   
           ON md.c__khmc=a.AccountId
      

  2.   

    UPDATE  a
    SET     a.RatingCode = 5
    FROM    Account a
            RIGHT  JOIN ( SELECT    c__khmc ,
                                    SUM(c__dkje) c__dkje
                          FROM      e__ManagementDetail
                          WHERE     DATEDIFF(yy, md.createdOn, GETDATE()) <= 2
                          GROUP BY  c__khmc
                          HAVING    SUM(c__dkje) >= 100000
                        ) md ON md.c__khmc = a.AccountId