Necesito generar delete con un loop, que a medida que se ejecute, pase al siguiente registro

¿Cómo están?

La verdad tengo la idea muy clara, pero no se como realizarlo para ver si me pueden orientar ya que no utilizo sql hace mucho.

Tengo unos registros que se duplican, y para quitar esta duplicidad tengo que revisarlos uno a uno lo cual genera mucho trabajo, logre generar unas consultas que me identifican los registros duplicados, y también tengo uno para eliminarlos, pero quiero automatizar este proceso con un loop, asignándoles un rownumber o rowid, y que cuando se ejecute el delete, el loop pase al siguiente registro duplicado, hasta que ya no queden más.

Las querys son las siguientes:

Con esta identifico las guías que tienen registros duplicados:

select rownum rid,c_linean,n_awb from (select c_linean, n_awb,c_posta_orig, rownum rid, row_number() over (partition by c_posta_rva,n_reserva,
bodega,username,f_recepcion,h_recepcion,c_linean,n_awb,c_posta_agen,n_clie_agen,nom_ship,nom_cons,c_posta,q_piezas,n_producto,p_grwei,
p_chwei,volumen,ty_volumen,s_carga,embalaje,s_recep,s_etiquet,s_whr,ty_unidad,nom_deliv,c_posta_orig,s_document,whr_shc_code,whr_trucking_company,
whr_gate order by rownum) rn from whr where sid_date>= trunc(sysdate)-15)
where rn <> 1;

y con la siguiente elimino los registros duplicados de esas guías:

delete from whr
where rowid in (select rid from
(select rowid rid, row_number() over (partition by c_posta_rva,n_reserva,bodega,username,f_recepcion,h_recepcion,c_linean,n_awb,c_posta_agen,n_clie_agen,nom_ship,nom_cons,c_posta,q_piezas,n_producto,p_grwei,p_chwei,volumen,ty_volumen,s_carga,embalaje,s_recep,s_etiquet,s_whr,ty_unidad,nom_deliv,c_posta_orig,s_document,whr_shc_code,whr_trucking_company,whr_gate order by rowid) rn
from whr where c_linean=160 and n_awb=41694236) where rn <> 1);

Mi idea es que no tenga que digitar los datos marcados en negrita, y se auto asignen por el indice del rownum, y cuando se ejecute pase al siguiente.

Ojala me puedan ayudar.

Añade tu respuesta

Haz clic para o