一般的に私はこのような問題を解決する必要があるとき、私は「より良い」原則を使用します。
select reference_number, event_type, created_timestamp
from table_name best
left join table_name better_than on better_than.reference_number = best.reference_number and better_than.created_timestamp > best.created_timestamp
where better_than is null;
このようなクエリが行うことは、私が後にしていることよりも「良い」ものがないことを確認することです。私はこのパターンを使用して、必要のないあらゆる種類の「複製」レコードを削除します。 select文を作成したら、それをガイドとして使用して削除などを構築できます。
上記は、必要な最初の部分を解決します。重複しているタイプを削除するには、グループを実行してください。
select reference_number, event_type, created_timestamp
from table_name best
left join table_name better_than on better_than.reference_number = best.reference_number and better_than.created_timestamp > best.created_timestamp
where better_than is null
group by best.event_type;
これはコード作成サービスではありません。自分で試してみる必要がありますし、どこに問題があるのかを教えてください。 「私はいくつかのコードが好きです」とは決していいことではありません。 – Fred
サンプルデータと望ましい結果が最も役立ちます。また、あなたのRDMSにタグを付けるのに役立ちます。 –