首页 > 解决方案 > CASE SQL 语句 oracle 数据库

问题描述

我的要求是,如果第一个条件为空,则检查第二个条件,如果第二个条件为空,然后是 oracle 数据库中的第三个条件,所以我试图通过 case 语句来实现这一点,如下所示,但由于缺少表达式/缺失而出现错误关键词。

CASE
     WHEN (TRUNC( OTA_EVENTS.COURSE_START_DATE) BETWEEN PER_ALL_ASSIGNMENTS_F.EFFECTIVE_START_DATE AND PER_ALL_ASSIGNMENTS_F.EFFECTIVE_END_DATE ) IS NULL  
     then  (TRUNC(OTA_DELEGATE_BOOKINGS.Date_Booking_Placed) BETWEEN PER_ALL_ASSIGNMENTS_F.EFFECTIVE_START_DATE AND PER_ALL_ASSIGNMENTS_F.EFFECTIVE_END_DATE) 
     ELSE (TRUNC(OTA_DELEGATE_BOOKINGS.DATE_STATUS_CHANGED) BETWEEN PER_ALL_ASSIGNMENTS_F.EFFECTIVE_START_DATE AND PER_ALL_ASSIGNMENTS_F.EFFECTIVE_END_DATE) 
END

如果有任何其他方法可以实现这一点,请提供帮助

标签: sqloracleif-statementcasebetween

解决方案


我的要求是,如果第一个条件为空,则检查第二个条件,如果第二个条件为空,则检查 oracle 数据库中的第三个条件

我看不出你的代码与这个问题有什么关系(它是使用between而不是NULL比较。但是你所描述的是COALESCE()

select coalesce(a, b, c)

这可以根据需要使用尽可能多的参数。它返回第一个非NULL值。


推荐阅读