web-dev-qa-db-ja.com

COALESCE内でのSELECTの使用

次の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では許可されていませんか?他にどのようにこのステートメントを書くことができますか?

現在、合体部分で「Missing Expression」エラーが発生しています。

19
user3808188

selectsを括弧で囲む必要があります。

coalesce( (SELECT ID FROM Stmt G WHERE G.CLAIMNO=C.CLNUMBER)
        , (select StmtSeq.nextval from dual)
        )
33
Patrick Hofman