#sql #sql-server
#sql #sql-сервер
Вопрос:
Я пытаюсь разобраться в sql, как выбрать все строки заказов для следующих двух возможных дат отгрузки
Строки заказов
ID Name ShipmentDate
1 Product 1 2019-04-10
2 Product 1 2019-04-12
3 Product 2 2019-04-12
4 Product 1 2019-04-14
Желаемый результат
ID Name ShipmentDate
1 Product 1 2019-04-10
2 Product 1 2019-04-12
3 Product 2 2019-04-12
Ответ №1:
Один метод использует dense_rank()
:
select ol.*
from (select ol.*,
dense_rank() over (order by shipmentdate desc) as seqnum
from orderlines ol
) ol
where seqnum <= 2;
В качестве альтернативы вы можете использовать фильтрацию в where
предложении:
select ol.*
from orderlines ol
where ol.shipmentdate >= (select distinct ol2.shipmentdate
from orderlines ol2
order by shipmentdate desc
offset 1 fetch first 1 row only
);