Oracle 12.1.3 Virtual Trader模块多条件CASE语句编写咨询
符合Virtual Trader模块语法的多条件CASE语句方案
以下语句中{D2001}为交易量对应的模块单元格引用,你可以替换为实际使用的单元格参数。
1. 全额累进费率计算(交易量达到某一档后全额适用对应费率)
直接计算总费用的写法:
CASE WHEN to_number({D2001}) > 2000000000 THEN to_number({D2001}) * 0.017 WHEN to_number({D2001}) > 1500000000 THEN to_number({D2001}) * 0.019 WHEN to_number({D2001}) > 1000000000 THEN to_number({D2001}) * 0.022 ELSE to_number({D2001}) * 0.024 END
仅返回对应费率值的写法:
CASE WHEN to_number({D2001}) > 2000000000 THEN 0.017 WHEN to_number({D2001}) > 1500000000 THEN 0.019 WHEN to_number({D2001}) > 1000000000 THEN 0.022 ELSE 0.024 END
2. 超额累进费率计算(每一级距的交易量单独适用对应费率,累加计算总费用)
CASE WHEN to_number({D2001}) > 2000000000 THEN 1000000000*0.024 + 500000000*0.022 + 500000000*0.019 + (to_number({D2001})-2000000000)*0.017 WHEN to_number({D2001}) > 1500000000 THEN 1000000000*0.024 + 500000000*0.022 + (to_number({D2001})-1500000000)*0.019 WHEN to_number({D2001}) > 1000000000 THEN 1000000000*0.024 + (to_number({D2001})-1000000000)*0.022 ELSE to_number({D2001}) * 0.024 END
语法适配说明
- 完全对齐你提供的模块语法规范,所有数值转换统一使用
to_number()函数处理,避免单元格返回文本类型导致计算报错 - CASE判断顺序遵循“从高到低”的区间匹配逻辑,避免低区间优先判断导致高区间规则失效
- 所有常量未使用千分符,符合Oracle语法数值书写要求
内容的提问来源于stack exchange,提问作者Stanley Suzikya
相关产品推荐
相关产品推荐

