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
| select coalesce(e.IDClient, l.IDClient)
, case -- Si IDClient existe dans encaissement et livraison
when l.IDClient is not null and e.IDClient is not null
then l.sum_totalTTC - e.sum_montantPaye
-- Si IDClient existe dans livraison et pas dans encaissement
when l.IDClient is not null and e.IDClient is null
then l.sum_totalTTC
end as creance
, case -- Si IDClient existe dans encaissement et livraison
when l.IDClient is not null and e.IDClient is not null
then e.sum_montantPaye - l.sum_totalTTC
-- si IDClient existe dans encaissement et pas dans livraison
when l.IDClient is null and e.IDClient is not null
then e.sum_montantPaye
end as avance
from (select IDClient, sum(montantPaye) as sum_montantPaye
from Encaissement
group by IDClient
) e
full outer join
(select IDClient, sum(totalTTC) as sum_totalTTC
from LivraisonClient
group by IDClient
) l
on l.IDClient = e.IDClient |
Partager