sql - 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
如果有任何其他方法可以实现这一点,请提供帮助
解决方案
我的要求是,如果第一个条件为空,则检查第二个条件,如果第二个条件为空,则检查 oracle 数据库中的第三个条件
我看不出你的代码与这个问题有什么关系(它是使用between
而不是NULL
比较。但是你所描述的是COALESCE()
:
select coalesce(a, b, c)
这可以根据需要使用尽可能多的参数。它返回第一个非NULL
值。
推荐阅读
- docker - 尝试删除旧 docker 映像时,我在 nexus 中遇到与磁盘空间相关的问题
- javascript - react-aad-msal 清除本地存储。传递状态
- android - 使用 RecyclerView、ListAdapter 和 ViewModel 保存检查状态的最佳实践
- dolphindb - 在 DolphinDB 中显示 dfsdatabase
- c# - 如果少于 1 秒,WPF 表单不透明度淡入淡出动画未完成
- mysql - 如何在特殊条件下每月划分数据
- c# - 如何通过 Autofac 5 的配置文件(运行时配置)使用外部插件
- java - 使用 FirebaseRecyclerAdapter 遍历 Firebase 中对象中的对象
- php - 如何在 .htaccess 中重定向特定模式 URI
- spring-boot - RestHighLevelClient JUnit 测试返回 NullPointerException