Creo que puedo optimizar este enunciado sql usando una declaración de caso para las uniones externas izquierdas.Optimización SQL Declaración de caso
Pero he estado teniendo dificultades para configurar los casos, uno para resumir los tipos de código AB, CD y otro para Todo lo demás.
Apreciar cualquier ayuda o consejo que pueda darme sobre esto.
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;
¿Es esto válido? Parece que está actualizando la columna 'payments' dos veces. –
@Siva Estoy usando Advantage 9 – Trevor