2014-12-05 76 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 2014-12-05 08:10:57

+0

我不好,是我使用SQL Server – Scelo 2014-12-05 08:17:26

回答

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 2014-12-05 09:17:26

+0

剛做的,謝謝。 – Scelo 2014-12-05 09:49:50

相關問題