ошибка реляционного оператора при использовании множественного условия в предложении where - PullRequest
0 голосов
/ 01 мая 2020

У меня есть столбец даты, и мне нужно проверить пару условий для сценария ниже ... но похоже, что я делаю что-то не так и, таким образом, получаю ошибку

scenario:
If EmpBonusDate column is null or
if (sysdate-EmpBonusDate >= some constant number) then return 1 else 0

- Я умножаю вывод (sysdate -EmpBonusDate) на 24, поэтому я могу получить число, которое я могу сравнить, чтобы проверить> = условие с постоянным числом.

это то, что мой sql выглядит как

Select count(1) from employee emp where
Emp.IsActive = '1'
and (sysdate - emp.EmpBonusDate) * 24 >= 30 -- this works
-- or nvl(emp.EmpBonusDate,1) -- if I add or clause, I get [ORA-00920] invalid relational operator error.... 

любой Укажите, что я делаю неправильно и как я могу получить 1 или 0 для вышеупомянутого сценария

1 Ответ

0 голосов
/ 01 мая 2020

С синтаксисом or nvl(emp.EmpBonusDate,1) вам не хватает связи, потому что вы не сравниваете это значение с чем-то.

Вы можете заменить предложение where на

Emp.IsActive = '1' and ((sysdate - emp.EmpBonusDate) * 24 >= 30 or emp.EmpBonusDate is null)

это эквивалентно вашему условию if.

...