(SELECT IIF([Date Retired/Left] = NULL, DateDiff("yyyy", [Date Employed],Now()),
DateDiff("yyyy",[Date Employed],[Date Retired/Left]))
FROM [Employment History]
WHERE [Employment History].EmployeeID = [Training History].EmployeeID)
AS [Time Employed]
Это подзапрос, который возвращает правильное значение, если [Date Retired / Left] содержит дату, однако, когда он не содержит даты, т.е. не ушел или не вышел на пенсию, я хочу получить информацию о продолжительности занятости до настоящего момента. Я попытался использовать команду Now (), но не могу заставить ее работать, получаю пробелы в этих полях.
Приносим извинения, если это простая ошибка, я новичок, пробующий SQL впервые на этой неделе.
Это было навсегда с тех пор, как я последний раз работал с ms-access, но я думаю, что проблема в этой части: [Date Retired/Left] = NULL
.
В каждой известной мне базе данных нельзя сравнивать значения с NULL
- результат всегда будет либо false
, либо unknown
. Вам нужно изменить это на [Date Retired/Left] IS NULL
.
Итак, ваш подзапрос должен быть таким:
(SELECT IIF([Date Retired/Left] IS NULL,
DateDiff("yyyy", [Date Employed], Now()),
DateDiff("yyyy", [Date Employed], [Date Retired/Left])
)
FROM [Employment History]
WHERE [Employment History].EmployeeID = [Training History].EmployeeID)
AS [Time Employed]
Если бы я был волшебником, я был бы прямо сейчас на пляже на Гавайях ... просто программист ... но рад помочь :-)