问题描述
Merge into exchangeuplift up
using (select up. Rowid row_id,up.forcedcharge/evcal.totalnotion)
from exchange evcal
join exchangeuplift up
on evcal.exchangename = up.exchangename
and up.isactive = 1
and up.forcedcharge <> 0 evcal.totalnotion <> 0 ) src
on (up.rowid = src.row_id)
when matched then
update set forcedchargepro = (src.forcecharge/ evcal.totalnotion)
错误:ora-00904“ evcal.totalnotion”无效的标识符
最后一行出现错误,我们可以在设定的条件下使用除法吗
解决方法
您的代码中有几个错误,似乎是错别字或抄写错误的混合,但您似乎正在尝试做:
merge into exchangeuplift up
using (
select up.rowid row_id,up.forcedcharge / evcal.totalnotion result
from exchange evcal
join exchangeuplift up
on evcal.exchangename = up.exchangename
and up.isactive = 1
and up.forcedcharge <> 0
and evcal.totalnotion <> 0
) src
on (up.rowid = src.row_id)
when matched then update
set forcedchargepro = src.result
我在using
子句中为别名指定了result
别名,然后在set
子句中引用了别名。您不能在该子句中引用evcal
或内部up
中的列。
在exchangeuplift
子句中再次查看using
似乎有点多余;这可能也可以:
merge into exchangeuplift up
using exchange src
on (up.exchangename = src.exchangename)
when matched then update
set up.forcedchargepro = up.forcedcharge / src.totalnotion
where up.isactive = 1
and up.forcedcharge <> 0
and src.totalnotion <> 0
或者也许:
merge into exchangeuplift up
using exchange src
on (up.exchangename = src.exchangename
and up.isactive = 1
and up.forcedcharge <> 0
)
when matched then update
set up.forcedchargepro = up.forcedcharge / src.totalnotion
where src.totalnotion <> 0
db<>fiddle包含根据代码似乎在做什么的虚构数据,因为您没有提供数据或预期结果。