【问题标题】:Obtaining record one before MAX(date) from table从表中获取 MAX(date) 之前的记录
【发布时间】:2016-08-18 23:51:50
【问题描述】:

我有一个将所有 12 个月存储为记录的表,以及另外两个列,processDate 和 completed。 processDate 字段是流程每月运行的日期,该字段每年更新一次。当进程在每个月的 processDate 日期完成运行时,另一列“已完成”是布尔值更改为 true。

我有一个最大查询,它返回所有 12 条记录的 processDate,其中已完成。

我想要的是 max(processDate) 之前的日期

SELECT MAX(processDate) FROM refreshProcessdates WHERE completed = 'True'

如何返回比 Max processDate 少 1 的记录,即前一个月?

SQL Server Express 2008

【问题讨论】:

  • 请澄清。上一次执行前的每个月的日期还是上一次执行的日期?如果后者只需添加AND processDate < (SELECT MAX(processDate) FROM refreshProcessdates WHERE completed = 'True')
  • 这是之前执行的日期。
  • 它成功了,谢谢,请添加您的评论作为答案,以便我可以这样确认。

标签: sql-server-2008 tsql date


【解决方案1】:

最简单的方法是这样的。您只需排除 where 子句中的第一个结果。

 SELECT MAX(processDate) FROM refreshProcessdates WHERE completed = 'True' 
 AND processed date <> (SELECT MAX(processDate) FROM refreshProcessdates 
 WHERE completed = 'True')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多