2014-12-05 2 views
2

Я пытаюсь получить первую запись и последнюю запись каждого месяца в заданный диапазон дат с использованием sql. У меня есть пример кода, в котором я только что выбрал все в пределах диапазона дат, теперь мне нужно извлечь первую и последнюю записи каждого месяца.Как получить первую и последнюю запись каждого месяца в интервале времени в sql

SELECT PurOrderNum, 
     OrderDate 
FROM Purchasing.PurOrder 
WHERE OrderDate >= '2013-02-28' 
     AND OrderDate <= '2014-12-29' 
+0

Я использую среду SQL Server Management Studio, – Scelo

+0

Мой плохой, да я с помощью SQL Server – Scelo

ответ

2

Вы можете попробовать row_number():

WITH FilterOrders AS (
    SELECT 
    * 
    , MinDatePrio = ROW_NUMBER() OVER (PARTITION BY YEAR(OrderDate), MONTH(OrderDate) ORDER BY OrderDate, PurOrderNum) 
    , MaxDatePrio = ROW_NUMBER() OVER (PARTITION BY YEAR(OrderDate), MONTH(OrderDate) ORDER BY OrderDate DESC, PurOrderNum DESC) 
    FROM Purchasing.PurOrder 
    WHERE OrderDate BETWEEN '2013-02-28' AND '2014-12-29' 
) SELECT PurOrderNum, OrderDate FROM FilterOrders 
WHERE MinDatePrio = 1 OR MaxDatePrio = 1 

Результат:

enter image description here

+0

На точку Jarle. Я просто заменил * PurOrderNum, OrderDate, и я получил то, что хотел. спасибо человек – Scelo

+0

как раз сделал, спасибо. – Scelo

Смежные вопросы