Oracle SQL如何实现仅对特定组织执行指定查询条件
解决方案
修改后完整SQL
SELECT lines.customer_trx_id customer_trx_id, lines.unit_selling_price, lines.customer_trx_line_id customer_trx_line_id FROM mtl_units_of_measure uom, ra_customer_trx_lines_all lines, ra_customer_trx_all trx WHERE trx.customer_trx_id = lines.customer_trx_id AND trx.complete_flag = 'Y' AND lines.uom_code = uom.uom_code(+) AND lines.line_type = 'LINE' AND trx.customer_Trx_id =1 AND lines.unit_selling_price <>0 -- 仅org_id为1、2时执行描述排除规则 AND ( trx.org_id NOT IN (1,2) OR ( trx.org_id IN (1,2) AND lines.description NOT LIKE '%PROM%DISCOUNT%' AND lines.description NOT LIKE '%TIER%DISCOUNT%' ) )
规则说明
- 核心用分支逻辑实现不同组织的过滤规则隔离:
- 当
org_id不属于1、2时,条件分支直接返回真,跳过两条描述排除规则,所有满足基础过滤条件的行都会返回 - 当
org_id属于1、2时,才会校验两行NOT LIKE的过滤规则,排除符合指定描述的行
- 当
- 上述逻辑默认
org_id存储在交易头表ra_customer_trx_all(对应SQL别名trx)中,若实际业务中组织标识存储在行表ra_customer_trx_lines_all中,只需将所有trx.org_id替换为lines.org_id即可 - 可选兼容优化:如果
org_id存在空值场景,可将trx.org_id NOT IN (1,2)修改为NVL(trx.org_id, 0) NOT IN (1,2),避免空值导致的判断异常
内容的提问来源于stack exchange,提问作者David D'Lima
相关产品推荐
相关产品推荐

