左外部結合のcaseステートメントを使用してこのSQLステートメントを最適化できると思います。SQL最適化のケースステートメント
しかし、私は、コードタイプAB、CD、およびその他すべてをまとめたケースを設定するのに苦労しています。
私にこれについて教えていただけるお手伝いをお待ちしております。たぶん
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;
これは有効ですか?あなたは 'payments'列を2回更新しているようです。 –
@Siva Advantage 9を使用しています – Trevor