Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中获取某个时间范围内每个月的第一条和最后一条记录_Sql_Sql Server - Fatal编程技术网

如何在sql中获取某个时间范围内每个月的第一条和最后一条记录

如何在sql中获取某个时间范围内每个月的第一条和最后一条记录,sql,sql-server,Sql,Sql Server,我正在尝试使用sql获取给定日期范围内每个月的第一条记录和最后一条记录。我有一个示例代码,我刚刚选择了日期范围内的所有内容,现在我必须提取每个月的第一个和最后一个记录 SELECT PurOrderNum, OrderDate FROM Purchasing.PurOrder WHERE OrderDate >= '2013-02-28' AND OrderDate <= '2014-12-29' 选择PurOrderNum, 訂單日期

我正在尝试使用sql获取给定日期范围内每个月的第一条记录和最后一条记录。我有一个示例代码,我刚刚选择了日期范围内的所有内容,现在我必须提取每个月的第一个和最后一个记录

SELECT  PurOrderNum,
        OrderDate
FROM    Purchasing.PurOrder
WHERE   OrderDate >= '2013-02-28'
        AND OrderDate <= '2014-12-29'
选择PurOrderNum,
訂單日期
从采购订单
其中OrderDate>=“2013-02-28”
和OrderDate您可以尝试使用row_number():

结果:


我正在使用SQL Server管理研究我不好,是的,我正在使用point Jarle上的SQL Server。我刚刚用PurOrderNum和OrderDate替换了*我得到了我想要的。谢谢你,伙计
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