在COALESCE中使用SELECT

use*_*188 18 sql oracle plsql oracle-sqldeveloper

如何更正以下SQL代码,特别是COALESCE部分?

insert into Stmt G (ID,blah,foo)
select
coalesce(SELECT ID FROM Stmt G WHERE G.CLAIMNO=C.CLNUMBER, select StmtSeq.nextval from dual),
c.blah,
d.foo
from claim c
left join d on ...;
Run Code Online (Sandbox Code Playgroud)

如果ClaimNo匹配,我将从Stmt表中获取ID,否则创建一个新ID.SQL中不允许这样做吗?我怎么能写这个陈述?

我现在正在coalesce部分出现"Missing Expression"错误.

Pat*_*man 36

你应该在selects 周围放置括号:

coalesce( (SELECT ID FROM Stmt G WHERE G.CLAIMNO=C.CLNUMBER)
        , (select StmtSeq.nextval from dual)
        )
Run Code Online (Sandbox Code Playgroud)

  • 请注意,合并后大括号之间的空间至关重要。 (2认同)