sql - Update one field in a table in reference to another field on the same table Oracle -
i need update varchar2 field sequential values e.g 001, 002, 002 in reference field entity_id on same table. need such if example have same entity_id on 2 different rows, sequential values should same.
an example output:
entity_id seq_field 1234 001 1234 001 4567 002 4567 002 3412 003
i have tried rownum gives different values each entity_id , of course values not have trailing zero. please help.
merge the_table using ( select rowid rid, entity_id, to_char(dense_rank() on (order entity_id), 'fm00000') seq foo ) t on (the_table.rowid = t.rid) when matched update set seq_field = t.seq;
if want start new sequence each entity_id
need change statement slightly:
merge foo using ( select rowid rid, entity_id, to_char(row_number() on (partition entity_id order null), 'fm00000') seq foo ) t on (foo.rowid = t.rid) when matched update set seq_field = t.seq;
note used row_number()
instead of dense_rank()
, partition entity_id
restart numbering each new value of entity_id
. if have column determine "order" 1 entity_id, can replace null
in order null
column e.g. order created_at
Comments
Post a Comment