2017-07-20 9 views
0

を修正する方法私は私のコードを見てきたし、私が何をしたかわから間違っていないよORA-00918:列あいまいエラー

このコードは、エラー

WITH comc AS (
      SELECT ncc1.allocation_code,ncc1.note_type,ncc1.note_text,ncc1.description 
      FROM notes ncc1 
      WHERE ncc1.note_type = 'CC' 
      ), 
    coms AS (
      SELECT ncc2.allocation_code,ncc2.note_type,ncc2.note_text,ncc2.description 
      FROM notes ncc2 
      WHERE ncc2.note_type = 'CS' 
      ), 
get_note AS ( 
      SELECT n1.allocation_code alloc_code, cc3.note_type, cc3.note_text, cs4.note_type, cs4.note_text,row_number() OVER (PARTITION BY n1.allocation_code ORDER BY n1.allocation_code) ranki 
      FROM notes n1 
      LEFT JOIN comc cc3 ON cc3.allocation_code = n1.allocation_code 
      LEFT JOIN coms cs4 ON cs4.allocation_code = n1.allocation_code 
      WHERE n1.note_type IN ('CC','CS') 
      ) 
      SELECT gt.alloc_code 
      FROM get_note  gt 

に動作しないので、私はこの

に変更しました別名を言う、私はそれを回避ググエラー を修正するためにどのように曖昧列を、私は私のコードにエイリアスを追加しました:
WITH comc AS (
      SELECT ncc1.allocation_code,ncc1.note_type,ncc1.note_text,ncc1.description 
      FROM notes ncc1 
      WHERE ncc1.note_type = 'CC' 
      ), 
    coms AS (
      SELECT ncc2.allocation_code,ncc2.note_type,ncc2.note_text,ncc2.description 
      FROM notes ncc2 
      WHERE ncc2.note_type = 'CS' 
      ), 
get_note AS ( 
      SELECT n1.allocation_code alloc_code, cc3.note_type, cc3.note_text, cs4.note_type, cs4.note_text,row_number() OVER (PARTITION BY n1.allocation_code ORDER BY n1.allocation_code) ranki 
      FROM notes n1 
      LEFT JOIN comc cc3 ON cc3.allocation_code = n1.allocation_code 
      LEFT JOIN coms cs4 ON cs4.allocation_code = n1.allocation_code 
      WHERE n1.note_type IN ('CC','CS') 
      ) 
      SELECT gt.alloc_code 
      FROM allocation allo 
LEFT JOIN get_note  gt     ON gt.alloc_code = allo.allocation_code 

は、このERRO ORA-00918を持ち始めます。 なぜこのエラーが発生していますか?

+0

get_note CTEの 'alloc_code'にエイリアスを追加してみてください。おそらく 'n1.alloc_code'と同じですか? –

答えて

2

修正get_note

get_note AS ( 
     SELECT n1.allocation_code alloc_code, 
       cc3.note_type as note_type_3, cc3.note_text as note_text_3, 
-----------------------------------------^ 
       cs4.note_type as note_type_4, cs4.note_text as note_text_4, 
       row_number() OVER (PARTITION BY n1.allocation_code ORDER BY n1.allocation_code) ranki LEFT JOIN 
     FROM notes n1 
      comc cc3 
      ON cc3.allocation_code = n1.allocation_code LEFT JOIN 
      coms cs4 
      ON cs4.allocation_code = n1.allocation_code 
     WHERE n1.note_type IN ('CC','CS') 
    ) 

がその後の列への参照を修正。

オラクルが最初のバージョンを受け入れるのは少し驚きです。私はあいまいさをチェックする前に列を剪定すると思います。

関連する問題