1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| With Table1 as
(
select 'A' as code, 1000 as montant from dual union all
select 'B' , 900 from dual union all
select 'C' , 800 from dual union all
select 'D' , 700 from dual union all
select 'F' , 1500 from dual
)
, Table2 as
(
select 'A' as code, 100 as montant from dual union all
select 'A' , 400 from dual union all
select 'A' , 200 from dual union all
select 'B' , 300 from dual union all
select 'B' , 100 from dual union all
select 'E' , 100 from dual union all -- petit rajout
select 'F' , 500 from dual union all
select 'F' , 400 from dual union all
select 'F' , 100 from dual
)
, t1_agg as
(
select code
, sum(montant) as montant_tot
from Table1
group by code
)
, t2_agg as
(
select code
, sum(montant) as montant_tot
from Table2
group by code
)
select coalesce(t1.code, t2.code) as code
, coalesce(t1.montant_tot, 0) - coalesce(t2.montant_tot, 0) as montant
from t1_agg t1
full outer join t2_agg t2
on t2.code = t1.code
order by code asc;
CODE MONTANT
---- -------
A 300
B 500
C 800
D 700
E -100
F 500 |
Partager