0

一時テーブルを参照する次のクエリがあります。プライマリ インデックス (i_sys_clm) の設定に問題があります。

エラーが表示されます: tab2 と "." の間に何かが必要です。コミット時にデータ プライマリ インデックス (i_sys_clm) だけを使用すると、行が保持されます。あいまいですというエラーが表示されます。

 create volatile table Fin as (
 select tab1.*
 ,tab2.i_sys_clm
 ,tab2.c_sta_clm as "new_status"
 ,tab2.whse_curr_row_ind
 ,tab2.whse_load_ts
 ,(case when tab2.c_sta_clm  is null then 'U' else tab1.c_sta_clm end) bom_status  
 ,tab2.c_sta_clm eom_status

 from tab1
 left outer join tab2
 on tab1.i_sys_clm = tab2.i_sys_clm
 ) with data primary index (tab2.i_sys_clm)  on commit preserve rows;
4

1 に答える 1

1

インデックスを作成するとき、インデックス列名は、ソース テーブルではなく、作成される新しいテーブルを参照します。tab2.i_sys_clmindex: エイリアスをSELECTステートメントに追加するには、インデックスの作成時にそのエイリアスを参照します。例えば:

 create volatile table Fin as (
 select tab1.*
 ,tab2.i_sys_clm as "i_sys_clm_2"
 ,tab2.c_sta_clm as "new_status"
 ,tab2.whse_curr_row_ind
 ,tab2.whse_load_ts
 ,(case when tab2.c_sta_clm  is null then 'U' else tab1.c_sta_clm end) bom_status  
 ,tab2.c_sta_clm eom_status

 from tab1
 left outer join tab2
 on tab1.i_sys_clm = tab2.i_sys_clm
 ) with data primary index (i_sys_clm_2)  on commit preserve rows;
于 2012-12-12T22:17:17.880 に答える