如何解决我们可以在合并语句中使用别名吗
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包含根据代码似乎在做什么的虚构数据,因为您没有提供数据或预期结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。