首页 > 解决方案 > 需要返回位于未来 1 个月或更长时间的日期范围(通常为 1 周)内的 MAX(DATE)

问题描述

我有一个表 ( PM_ACTION_LOG) 用于维护记录,列是ITEM, PM_TYPE, LOCATION,DATE

我只需要获取MAX(DATE)自上次日期以来至少 1 个月的每个“项目”的记录。日期范围通常为一周。

这是关闭但不返回逾期未记录的错过日期p

Select ITEM,PM_TYPE,LOCATION,MAX(DATE) as Last_Date
FROM PM_ACTION_LOG 
Where PM_TYPE = 'PM - Monthly' and LOCATION = 'Cass'
and DATEADD(Month,1,DATE) between '2018-12-23' and '2018-12-29'
GROUP BY ITEM,PM_TYPE,LOCATION

我认为需要某种形式的加入:

Select ITEM,PM_TYPE,LOCATION,MAX(DATE)
FROM PM_ACTION_LOG a 
WHERE PM_TYPE = 'PM - Monthly' and LOCATION = 'Cass'
GROUP by ITEM,PM_TYPE,LOCATION
INNER JOIN (Select ITEM,MAX(DATE)as LAST_DATE
FROM PM_ACTION_LOG b
Where DATEADD(MONTH,1,DATE) BETWEEN '2018-12-16' and '2018-12-22'
Group by ITEM,PM_TYPE,LOCATION)
on a.ITEM = b.ItEM

我想获取从上一个日期起 30 天且在日期范围内的每个项目的最新日期。我们每周都会进行预防性每月维护。

标签: psqldateaddmaxdate

解决方案


推荐阅读