0

我有一个日期列,需要检查以下情况的几个条件..但看起来我做错了什么,因此出现错误

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

4

1 回答 1

0

使用语法or nvl(emp.EmpBonusDate,1),您缺少关系,因为您没有将该值与某物进行比较。

你可以用这个替换你的where条款

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

这相当于你的 if 子句。

于 2020-05-01T16:05:41.507 回答