特定值的where子句中的情况oracle

问题描述

我们有2个表,表A和表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之内)

解决方法

如果尚不理解块/计算,请适当替换术语/表达式。

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
      );