Выбор следующего значения столбца, где последнее вхождение определенного значения найдено в другом столбце в SQL - PullRequest
0 голосов
/ 08 ноября 2019
date        buys/    quantity   Rolling Sum
            sell
08-AUG-19   BUY      100       -
13-SEP-19   SELL    -100       0
26-SEP-19   BUY      200      200
28-SEP-19   SELL    -50       150
29-SEP-19   SELL    -150       0

У меня должна быть последняя дата покупки после недавнего полного распроданного состояния количества.

В вышеупомянутом случае это было продано дважды один раз 13 сентября 19 и второйбыл 29 сентября 19 как выходной, мне нужно иметь значение 26 сентября 19 (поскольку это была последняя покупка до недавнего распроданного состояния)

Ожидаемый результат:

26-sep-19 

1 Ответ

1 голос
/ 08 ноября 2019

получить последнюю покупку до недавнего распроданного состояния

Вот один из вариантов:

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 является фактическим столбцом в вашей таблице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...