【问题标题】:How to get the first and the last record of every month within a time range in sqlsql如何获取某个时间范围内每个月的第一条和最后一条记录
【发布时间】:2014-12-05 17:21:27
【问题描述】:

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

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

【问题讨论】:

  • 我正在使用 SQL Server Management Studio
  • 我的错,是的,我正在使用 sql server

标签: sql sql-server


【解决方案1】:

你可以试试 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

结果:

【讨论】:

  • 关于 Jarle。我刚刚用 PurOrderNum、OrderDate 替换了 *,我得到了我想要的。谢谢你
猜你喜欢
  • 2011-12-17
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 2022-10-19
  • 2020-10-01
相关资源
最近更新 更多