May be you can try this:
update test_table
set Debit_BF = case when vw.D_BF = '' then 0 else vw.D_BF end ,
Credit_BF = case when vw.C_BF = '' then 0 else vw.C_BF end
from
test_table tt
inner join
( select T0.PrjCode,
T0.PrjName,
T1.Account,
T3.AcctName,
sum(T1.Debit) as D_BF,
sum(T1.Credit) as C_BF,
T4.CardName
From OPRJ T0
inner join JDT1 T1 ON (T0.PrjCode = T1.Project)
inner join OJDT T2 ON (T1.TransId = T2.TransId)
inner join OACT T3 ON (T1.Account = T3.AcctCode)
inner join OCRD T4 ON (T4.CardCode = T1.ShortName)
where T1.RefDate< :Prjcode1
group by T0.PrjCode,
T0.PrjName,
T1.Account,
T3.AcctName,
T4.CardName
) vw
on ( tt.PrjCode = vw.PrjCode
and tt.PrjName = vw.PrjName
and tt.Account = vw.Account
and tt.AcctName = vw.AcctName
)
;