-1

私はOracleを使用しています(まだ少し慣れていません)。以下の更新ステートメントを実行するたびに、次のエラーメッセージが表示されます。

SQL Error: ORA-00904: "CH"."CONTRACT_ID": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

クエリは次のとおりです。

UPDATE wr00262_catalogue_201310 ct SET
   ct.PORTFOLIO_ID = (SELECT ch.PORTFOLIO_ID 
                       from WR00262_CONTRACT_HEADER ch 
                       WHERE ch.PORTFOLIO_ID = ct.PORTFOLIO_ID)
   WHERE ct.NPC in (SELECT ctl.NPC 
                   FROM wr00262_contract_line ctl 
                    WHERE ctl.CONTRACT_ID = ch.CONTRACT_ID);

参加が必要かもしれないと思いますが、どこでどのように参加するのかよくわかりません。contract_header テーブルには、CONTRACT_ID という列があります。

4

1 に答える 1

0

これはスコープの問題です。1 つのサブクエリの列は、他のサブクエリからは見えません。だから、次のようなことを試してください:

UPDATE wr00262_catalogue_201310 ct SET
   PORTFOLIO_ID = (
      SELECT ch.PORTFOLIO_ID 
      from WR00262_CONTRACT_HEADER ch 
      WHERE ch.PORTFOLIO_ID = ct.PORTFOLIO_ID
   )
   WHERE ct.NPC in (
      SELECT ctl.NPC 
      FROM WR00262_CONTRACT_HEADER ch 
      join wr00262_contract_line ctl 
         on ctl.CONTRACT_ID = ch.CONTRACT_ID
      WHERE ch.PORTFOLIO_ID = ct.PORTFOLIO_ID
   );
于 2013-03-20T12:33:13.643 に答える