在COALESCE中使用SELECT

时间:2014-08-14 15:26:27

标签: 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 ...;

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

我得到了一个"失踪的表情"现在合并部分出现错误。

1 个答案:

答案 0 :(得分:30)

您应该在select s:

周围放置括号
coalesce( (SELECT ID FROM Stmt G WHERE G.CLAIMNO=C.CLNUMBER)
        , (select StmtSeq.nextval from dual)
        )