【问题标题】:relational operator error while using multiple condition in where clause在 where 子句中使用多个条件时出现关系运算符错误
【发布时间】:2020-05-01 13:33:56
【问题描述】:

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

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

【问题讨论】:

  • 你能和Emp.IsActive = '1' and ((sysdate - emp.EmpBonusDate) * 24 >= 30 or emp.EmpBonusDate is null)一起试试吗?
  • 出现错误或不提取行?
  • @WoAiNii - 您可以将此作为答案发布.. 我会接受它.. 按预期工作..

标签: sql plsql oracle-sqldeveloper


【解决方案1】:

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

你可以用这个替换你的where子句

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

这相当于你的 if 子句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多