Необходимо вернуть МАКС (ДАТА), который попадает в диапазон дат (обычно 1 неделя), который составляет 1 месяц или более в будущем

У меня есть столик (PM_ACTION_LOG) для записей обслуживания, столбцы ITEM, PM_TYPE, LOCATION, DATE

Мне нужно получить только записи, которые MAX(DATE) за каждый "предмет", который был не менее 1 месяца с момента последней даты. Диапазон дат обычно составляет неделю.

Это близко, но не возвращает просроченные пропущенные даты, которые не были зарегистрированы

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 дней с последней даты и попадает в диапазон дат. Мы проводим профилактическое ежемесячное обслуживание каждую неделю.

0 ответов

Другие вопросы по тегам