Oracle SQL Update using group by/case -


i have record table1 structure

key1 key2 key3 emplid enrcd addl_seq ...  (key1 key2 key3 emplid enrcd addl_seq) being keys 

i have rows emplid & erncd same different values of key1/2/3 increment addl_seq value 1 when multiple rows exist same emplid & erncd

example

 - key1   key2 key3  emplid  erncd addl_seq    001    a1   b1    12345   reg    1    001    a1   b2    12345   reg    2  updated sql update ps_xx_py40_apay_1 a1 set a1.addl_seq = (     select rank() over(partition xx_employee_id,erncd order      xx_conversion_id,xx_ucpath_loc,xx_wrkr_instance,xx_appt_num,xx_dist_num,empl_rcd,emplid,effdt)     ps_xx_py40_apay_1 b1     b1.xx_employee_id=a1.xx_employee_id      , b1.erncd=a1.erncd     , xx_conversion_id=xx_conversion_id      , xx_ucpath_loc=xx_ucpath_loc       , a1.xx_wrkr_instance=b1.xx_wrkr_instance     , b1.xx_appt_num=a1.xx_appt_num       , b1.xx_dist_num=a1.xx_dist_num       , a1.emplid=b1.emplid       , a1.empl_rcd=b1.empl_rcd      , a1.effdt=b1.effdt ); 

where keys joined. however, results not desired

result

004720864   rgn 1 004720864   rgn 1 004720864   rgn 1 004720864   rgn 1 

expected

   004720864    rgn 1     004720864   rgn 2     004720864   rgn 3     004720864   rgn 4 

the problem update statement, , 1 suggested in tim's answer, don't take account rank or row_number analytic function gets computed after where clause has been applied. so, in effect, analytic function computed on single row, return 1. not want.

here way perform update using merge statement should work you:

merge table1 dest using (   select key1, key2, key3, emplid, enrcd,          row_number() on (partition emplid, enrcd                                 order key1, key2, key3) addl_seq     table1 ) src on (   src.key1 = dest.key1   , src.key2 = dest.key2   , src.key3 = dest.key3   , src.emplid = dest.emplid   , src.enrcd = dest.enrcd ) when matched   update set dest.addl_seq = src.addl_seq 

Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -