根据标志列 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>
我是 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>