Update
vtnhmashaupl as UPL
inner join
vtsmvaccounts vacc
on vaccines. Vaiban = upl.vaiban
Inner join
vtsmvaccfmrmap as vfmr
on vacc.vaibanid = vfmr.vaibanid
and vfmr.fmrcode = upl.fmrcode
inner join
vtnhmbudget bd
on bd.hloccode = vacc.vacustidnt
inner join
vtnhmbudgetdtls dtls
on dtls.fmrcode = upl.fmrcode
and ifnull (Dtls.fnyear, bd.fnyear) = in_fnyear
set
upl.buddtlsid = dtls.buddtlsid, upl.budid = dtls.budid, upl.hloccode = bd.hloccode;
答案 0 :(得分:0)
我认为这符合您的期望。没有表结构和样本输入数据,我将无法对其进行测试。
merge into vtnhmashaupl upl
using ( select vacc.vaiban
, vfmr.fmrcode
, dtls.buddtlsid
, dtls.budid
, bd.hloccode
from vtsmvaccounts vacc
inner join vtsmvaccfmrmap as vfmr
on vacc.vaibanid = vfmr.vaibanid
inner join vtnhmbudget bd
on bd.hloccode = vacc.vacustidnt
inner join vtnhmbudgetdtls dtls
on dtls.fmrcode = vfmr.fmrcode
and nvl (dtls.fnyear, bd.fnyear) = in_fnyear
) sq
on ( sq.vaiban = upl.vaiban
and sq.fmrcode = upl.fmrcode )
when matched then
update
set upl.buddtlsid = sq.buddtlsid
, upl.budid = sq.budid
, upl.hloccode = sq.hloccode;