Необходимо вернуть МАКС (ДАТА), который попадает в диапазон дат (обычно 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 дней с последней даты и попадает в диапазон дат. Мы проводим профилактическое ежемесячное обслуживание каждую неделю.