Если Я правильно следил за вами, вы можете отфильтровать последнюю запись по сделке с подзапросом, а затем игнорировать сделки, последний статус которых является удалением:
select t.*
from mytable t
where
t.record = (select max(t1.record) from mytable t1 where t1.dealID = t.dealID)
and t.action <> 'Delete'
Насколько В этом случае вам не нужно использовать столбец modified
, чтобы получить желаемый результат.
Для производительности с этим запросом рассмотрите индекс на (dealID, record, action)
.
. Вы можете также express это с row_number()
, если ваша база данных поддерживает оконные функции:
select record, action, modified, dealID
from (
select t.*, row_number() over(partition by dealID order by record desc) rn
from mytable t
) t
where action <> 'Deleted'