Самая ранняя доступная дата – общее количество

Я пытаюсь определить самую раннюю доступную дату для элемента. Записи ниже являются примерами дат открытых заказов на поставку.

Если в заказе на продажу указано Кол-во 150, самой ранней доступной датой будет 2018-09-06.

Если в заказе на продажу указано Кол-во 160, самой ранней доступной датой будет 2018-09-28.

Использование приведенного ниже оператора вернет только MAX значение даты 2018-10-01. Есть ли способ получить правильную самую раннюю дату на основе SUM(po_qty) >= sales_order_qty?

IIF(SUM(po_qty) >= sales_order_qty,MAX(receive_date)) = 2018-10-01


branch item_id  po_qty receive_date
VMXX    93111   50     2018-06-13
VMXX    93111   50     2018-08-02
VMXX    93111   50     2018-09-06
VMXX    93111   100    2018-09-28
VMXX    93111   50     2018-10-01

person DAV    schedule 24.07.2018    source источник


Ответы (1)


В большинстве баз данных вы должны использовать стандартную ANSI функцию кумулятивной суммы:

select min(receive_date)
from (select t.*,
             sum(po_qty) over (partition by branch, item_id order by receive_date) as running_qty
      from t
      where branch = ? and item_id = ?
    ) t
where running_qty >= ?;
person Gordon Linoff    schedule 24.07.2018