如何将嵌套IIF语句改写为Oracle CASE WHEN语句
将嵌套IIF转换为Oracle CASE WHEN语句
转换后的标准CASE WHEN实现
CASE WHEN IN_RNK = 1 THEN CASE WHEN IN_SUM > 2 THEN CASE WHEN IN_MTR_COVERAGE_NUMBER_A = 'A' THEN 'ORIGINAL BASE' ELSE 'ORIGINAL RIDER' END ELSE IN_MTR_COVERAGE_NUMBER_A END ELSE IN_MTR_COVERAGE_NUMBER_A END
简化版(合并重复逻辑)
如果想让代码更紧凑,可合并外层相同的ELSE分支:
CASE WHEN IN_RNK = 1 AND IN_SUM > 2 THEN CASE WHEN IN_MTR_COVERAGE_NUMBER_A = 'A' THEN 'ORIGINAL BASE' ELSE 'ORIGINAL RIDER' END ELSE IN_MTR_COVERAGE_NUMBER_A END
逻辑对应说明
原嵌套IIF的逻辑可拆解为:
- 仅当
IN_RNK = 1且IN_SUM > 2时,才根据IN_MTR_COVERAGE_NUMBER_A的值返回特定字符串 - 其余所有场景,直接返回
IN_MTR_COVERAGE_NUMBER_A的原始值
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

