Je crois que je peux optimiser cette instruction sql en utilisant une instruction case pour les jointures externes gauches.Optimisation SQL Instruction
Mais j'ai eu du mal à mettre en place les cas, un pour résumer les types de code AB, CD et un autre pour Tout le reste.
Appréciez toute aide ou des conseils que vous pouvez me donner à ce sujet.
update billing set payments = isnull(bd1.amount, payments)
, payments = case
when payments is null then 0
else payments
end
, charges = case
when bd2.amount is not null then charges
when charges is null then 0
else charges
end
, balance = round(charges + isnull(bd1.amount, bi.payments), 2)
from billing bi
left outer join (select inv, round(sum(bd1.bal), 2) amount
from "bill" bd1
where code_type = 'AB'
or code_type = 'CD'
group by inv) bd1
on bd1.inv = bi.inv
left outer join (select invoice, round(sum(bd2.bal), 2) amount
from "bill" bd2
where code_type <> 'AB'
and code_type <> 'CD'
group by inv) bd2
on bd2.inv = bi.inv;
Est-ce valide? Vous semblez mettre à jour la colonne 'payments' deux fois. –
@Siva J'utilise Avantage 9 – Trevor