Предполагая, что ваши даты хранятся с использованием полей DateTime
и что диапазоны дат являются непрерывными (без пробелов), вы можете определить подходящее имя сеанса для вашей даты, используя следующий коррелированный подзапрос:
SELECT q.*,
(
SELECT TOP 1 r.Name
FROM Ranges r
WHERE q.MyDate <= r.[End date] ORDER BY r.[End date]
) AS SessionName
FROM [Records Query] q
Здесь я предполагаю, что ваши диапазоны дат хранятся в таблице с именем Ranges
, а поле даты в вашем запросе Records Query
называется MyDate
(измените его в соответствии с вашими данными).
ВВ приведенном выше примере, я предполагаю, что у вас есть следующие настройки:
Диапазоны
Запрос записей
SQL
Результат
К сожалению, вы не можете просто внедрить этот подзапрос в запрос UPDATE
-
UPDATE [Records Query] q
SET q.Session =
(
SELECT TOP 1 r.Name
FROM Ranges r
WHERE q.MyDate <= r.[End date] ORDER BY r.[End date]
)
..., поскольку результирующий запрос не будет обновляемым (так как новое значение ссылается натаблица обновляется).
Таким образом, вам, вероятно, потребуется вывести имена сеансов и первичный ключ из вашего Records Query
запрос к локальной таблице, которая затем может быть использована для обновления вашего запроса - другие, возможно, найдут более элегантный способ избежать этого.