根据标志列 Oracle SQL 开发人员的总结果(求和或减去一些值)

Total Result, (Sum or Subtract some Value) according to Flag Column Oracle SQL Developer

我是 SQL 开发人员的新手。

我有一个像上图这样的查询结果。

我想知道如何用 Flag = 1 对所有值求和并用 Flag = 2 减去所有值以获得总结果?

DECODE 的帮助下,方法如下:

SQL> with test (value, flag) as
  2    (select 100, 2 from dual union  -- sum of flag 2 values = 600
  3     select 200, 2 from dual union
  4     select 300, 2 from dual union
  5     --
  6     select 700, 1 from dual union  -- sum of flag 1 values = 1500
  7     select 800, 1 from dual
  8    )
  9  select sum(decode(flag, 1, value, 0)) sum_1,
 10         sum(decode(flag, 2, value, 0)) sum_2,
 11         --
 12         sum(decode(flag, 1, value, 0)) - sum(decode(flag, 2, value, 0)) result
 13  from test;

     SUM_1      SUM_2     RESULT
---------- ---------- ----------
      1500        600        900

SQL>