Есть таблица вида
ID Obj Stat Stat_date
1 Объект1 1 01.01.2023
2 Объект2 2 02.03.2023
3 Объект1 2 22.08.2023
4 Объект3 2 15.09.2023
5 Объект4 1 01.02.2023
6 Объект3 3 21.09.2023
Я все представляю упрощенно, чтобы не вмешивать лишнее. На самом деле в базе 5 таблиц, один связаны друг с другом и т. п.
Как видно, это вроде истории изменения статуса объектов. В этой таблице у объекта может быть много статусов. Я пытаюсь сформировать запрос, который выдаст мне
все объекты, чей *последний* за последние 300 дней равен 2
Если решать это в лоб, как попробовал я, получается результат, который мне не нужен:
SELECT ID, Obj, Stat, Stat_date
WHERE DATEDIFF('day', Stat_date, CURRENT_DATE) <= 300 AND Stat = 2
При таком запросе в результат попадут Объект1, Объект2, Объект3, хотя Объект3 последним статусом имеет 3, а не 2. Получается, последовательность фильтров это не последовательность, а одновременно применение. Подозреваю, что мне нужны два отдельных SELECT или какой-то комплексный фильтр, чтобы применять внутри него фильтры последовательно (каждый последующий фильтр обрабатывает результаты предыдущего), но не понимаю, как это сделать.
P.S. Не хватает тегов hsqldb/hypersql.
Перемещено hobbit из general