#sql #date #filemaker #closest
Вопрос:
Окончательный способ найти наиболее близкое совпадение дат между 2 таблицами Привет, у меня есть школьный проект, в котором я должен добавить математически выведенные дни к высоким и низким датам, а затем оценить полученный поворотный момент для моих исторических результатов. У меня есть три таблицы в FileMaker 19:
HighLowData с датой поворота поля
Математика, которая содержит 20 формул
Поворотные точки, которые создаются из сценария, зацикливающего математические формулы с помощью HighLowDate::TurnDate.
Таким образом, каждый HighLowDate::TurnDate приводит к 20 записям TurningPoints::cTPdate.
У меня есть поле в cLookup точек поворота, в котором я хочу рассчитать ближайшую дату поворота в HighLowData к моей дате CTP.
Я попытался выполнить SQL ( «ВЫБЕРИТЕ ДАТУ ПОВОРОТА ИЗ СПИСКА ДАННЫХ, ЧТОБЫ СОЕДИНИТЬ ТОЧКИ поворота ПО ПОРЯДКУ ABS (ДАТА поворота::Дата поворота — ТОЧКИ поворота::cTPdate), ИЗВЛЕКИТЕ ТОЛЬКО ПЕРВУЮ 1 СТРОКУ»; «»;»»)
Я признаю, что SQL находится вне моей зоны комфорта. Есть ли другой способ выполнить задачу или мой SQL можно привести в порядок для работы? Я понимаю, что DATEDIFF не работает с FileMaker.
Я попробовал LookupNext, но он просто вернул фактическую дату поворота для выбранной строки. Заранее спасибо
Ответ №1:
SQL-это нормально. Я бы использовал другой подход.
Начнем с
ExecuteSQL
("SELECT cTPdate
FROM TurningPoints
WHERE cTPdate >=?
ORDER BY cTPdate DESC
FETCH FIRST 1 ROW ONLY
";
"";"";HighLowDate::TurnDate)
Это даст вам самое близкое совпадение в будущем.
Переверните запрос, и вы получите самое близкое совпадение в прошлом
Затем вы можете сравнить разницу между этими двумя днями и вашей датой и получить наиболее близкое совпадение.
Если вам нужно в качестве калькулятора, вы можете использовать оператор Let