Используя оператор IIF с DateDiff, True не работает

  (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 впервые на этой неделе.

ДатыИспользуя оператор IIF с DateDiff, True не работает

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это было навсегда с тех пор, как я последний раз работал с 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]

Если бы я был волшебником, я был бы прямо сейчас на пляже на Гавайях ... просто программист ... но рад помочь :-)

Zohar Peled 01.05.2018 20:45

Другие вопросы по теме