多条件IF-THEN语句实现双日期优先级判定技术求助
多分支日期选择逻辑实现方案
根据你给出的规则,用SQL的CASE语句可直接实现需求,以下是对应逻辑的代码:
SELECT CASE -- 覆盖规则1、2:仅SECONDARY日期存在(或PRIMARY为空、SECONDARY非空),取SECONDARY日期 WHEN i_sched_dt IS NULL AND h_sched_dt IS NOT NULL THEN h_sched_dt -- 对应规则3:仅PRIMARY日期存在,取PRIMARY日期 WHEN h_sched_dt IS NULL AND i_sched_dt IS NOT NULL THEN i_sched_dt -- 对应规则4:两日期均存在时,根据当前日期判断 WHEN i_sched_dt IS NOT NULL AND h_sched_dt IS NOT NULL THEN CASE WHEN CURRENT_DATE < h_sched_dt THEN i_sched_dt ELSE h_sched_dt END -- 兜底处理:两个日期都为空时返回NULL(可根据实际需求调整) ELSE NULL END AS selected_date FROM your_table;
逻辑对应说明:
- 第一个
WHEN分支合并了规则1和2,因为二者本质都是仅SECONDARY日期有值的场景,直接返回h_sched_dt - 第二个
WHEN分支对应规则3,仅PRIMARY日期有值时返回i_sched_dt - 第三个
WHEN分支处理双日期存在的情况,通过嵌套CASE判断当前日期与SECONDARY日期的关系,匹配规则4 - 最后的
ELSE处理双日期均为空的边界场景,返回值可按需修改
内容的提问来源于stack exchange,提问作者SJac
相关产品推荐
相关产品推荐

