Я не знаю, используете ли вы MySQL или SQL Сервер, но при условии, что MySQL 8+ или SQL Сервер, вот версия, которая должна работать:
SELECT "Transaction", Flag, Date
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY "Transaction" ORDER BY Date DESC) rn
FROM yourTable
) t
WHERE rn = 1 AND Flag <> 'D';
Демонстрация
Демонстрация находится на SQL сервере, но базовый код c должен работать на любой базе данных, которая поддерживает ROW_NUMBER
.