行IDを使用するアプローチは次のとおりです。
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
)
サブクエリは、グループ内で最新ではない行(つまり、同じpar_num ,tran_num
を持つすべてのレコード)の行IDのリストを生成します。 )-グループごとの最新のレコードは、row_number()
を使用して識別されます 。外側のクエリはそれらの行を削除するだけです。