получить последнюю покупку до недавнего распроданного состояния
Вот один из вариантов:
select max(date)
from mytable t
where
buy_sell = 'BUY'
and date < (
select max(date)
from mytable
where rolling_sum = 0 and buy_sell = 'SELL'
)
Это демонстрация на DB Fiddle с вашими примерами возвращаемых данных:
| max(date) |
| :--------- |
| 2019-09-26 |
Примечание: это предполагает
1), что вы сохраняете даты как тип данных типа даты, а не как строки. .
2) что rolling_sum
является фактическим столбцом в вашей таблице