Hier ist ein Ansatz, der die Zeilen-IDs verwendet:
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
)
Die Unterabfrage generiert die Liste der Zeilen-IDs für Zeilen, die nicht die neuesten in ihrer Gruppe sind (dh alle Datensätze mit demselben par_num ,tran_num
). ) - Der neueste Datensatz pro Gruppe wird mit row_number()
identifiziert . Die äußere Abfrage löscht nur diese Zeilen.