update abc
   set cldw = 'XXXXXX'
  where (a,hjdm,lcbh) = ( select distinct a, hjdm, first_value(lcbh) over(order by lcbh desc) from abc                         
                                         where a ='320000664223099' and hjdm='ZZ15' )

解决方案 »

  1.   

    select t.*,rowid from abc t      
    update abc
          set cldw = 'XXX'
     where (cldw,a,hjdm,lcbh) = ( select distinct first_value(cldw) over(order by lcbh desc),
                                                               a, hjdm, 
                                                               first_value(lcbh) over(order by lcbh desc)
                                                      from abc                         
                                                    where a ='320000664223099' and hjdm='ZZ15' )
    这样写可以避免条件过滤后,lcbh列最大值与cldw一对多的情况。