在 where 子句中使用多个条件时关系运算符错误
relational operator error while using multiple condition in where clause
我有一个日期列,需要检查以下情况的几个条件..
但看起来我做错了什么,因此出现错误
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
使用语法 or nvl(emp.EmpBonusDate,1)
你缺少关系,因为你没有将该值与某物进行比较。
您可以用这个
替换您的where
子句
Emp.IsActive = '1' and ((sysdate - emp.EmpBonusDate) * 24 >= 30 or emp.EmpBonusDate is null)
这等同于您的 if 子句。
我有一个日期列,需要检查以下情况的几个条件.. 但看起来我做错了什么,因此出现错误
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
使用语法 or nvl(emp.EmpBonusDate,1)
你缺少关系,因为你没有将该值与某物进行比较。
您可以用这个
替换您的where
子句
Emp.IsActive = '1' and ((sysdate - emp.EmpBonusDate) * 24 >= 30 or emp.EmpBonusDate is null)
这等同于您的 if 子句。