Aquí hay un enfoque usando los ID de fila:
delete from transaction
where
last_update = date '2020-03-01'
and rowid in (
select rid
from (
select
rowid rid,
row_number() over(partition by par_num ,tran_num order by last_update desc) rn
from transaction
) t
where rn > 1
)
La subconsulta genera la lista de ID de fila para filas que no son las últimas en su grupo (es decir, todos los registros que tienen el mismo par_num ,tran_num
) - el registro más reciente por grupo se identifica usando row_number()
. La consulta externa simplemente elimina esas filas.