http://sqlfiddle.com/#!17/e9c97/59
Вот моя примерная база данных.Таблицы, созданные с помощью WITH, являются упрощенными версиями, в случае, если я работаю, статус is_paid
- это множество других условий, поэтому его нельзя просто использовать из таблицы orders
.Но вывод тот же
Что я хочу сделать, так это найти детали первого заказа (min(order_id)
), где все заказы клиента НЕ были оплачены ИЛИ min(order_id)
для неоплаченного заказа меньше, чем min(order_id)
для оплаченногопорядок.
Простота: клиент с оплаченным заказом до неоплаченного заказа исключен из результатов.
having min(onp.order_id) < min(op.order_id)
эта часть бессмысленна без итерации внутри заказов одного customer_id
, но как это сделать?
Чем дольше я думаю о решении, тем меньше логических способов я пытаюсь ..
Ожидаемый результат должен быть:
order_id, customer_id, amount
3 101 30
5 102 15
11 104 31
15 105 11