I have these rows in a table
ID Name Price Delivery
== ==== ===== ========
1 apple 1 1
2 apple 3 2
3 apple 6 3
4 apple 9 4
5 orange 4 6
6 orange 5 7
I want to have the price at the third delivery (Delivery=3) or the last price if there’s no third delivery.
It would give me this :
ID Name Price Delivery
== ==== ===== ========
3 apple 6 3
6 orange 5 7
I don’t necessary want a full solution but an idea of what to look for would be greatly appreciated.
Use ROW_NUMBER twice – once to filter the rows away that are after the third delivery, and the second time to find the last row remaining (i.e. a typical max per group query).
I’ve implemented this using CTEs. I tested it in SQL Server but I believe that Oracle supports the same syntax.
Result: