case in where 子句的特定值 oracle

case in where clause for specific values oracle

我们有 2 个 table、table A 和 table B,

我们在 select 语句中获取 6 列, 这些是列

  1. A.current_value,
  2. A.original_value,
  3. A.current_tax_lot,
  4. B.current_tax,
  5. B.cost_tax,
  6. B.current_tax_cost

现在我们必须在查询中加入数学条件:

  1. A.current_value – B.current_tax 在 +/- 2 以内,

  2. 如果A.original_value为空使用A.current_tax_lot执行公式:

2a。 A.current_tax_lot(从上面)– B.cost_tax 在 +/- 10 之内,或者

2b。 A.current_tax_lot(从上面)– current_tax_cost 在 +/-10 以内)

如果不理解 block/calculation,请适当地替换术语/表达。

Select  ...
Where 
      ABS(NVL(A.current_value, A.current_tax_lot) – B.current_tax) <=2
      AND 
      (
         ABS(A.current_tax_lot – B.cost_tax) <= 10 
         OR
         ABS(A.current_tax_lot – B.current_tax_cost) <= 10
      );