2011-07-19 8 views
1

しばらくこのクエリを処理しています...エラーを取得し続ける "対応する選択リスト式は互換性がありません各select文で同じ# 。ユニオンクエリの問題 - 選択リストが互換性がありません

create volatile table dt as (
SELECT 

      gcv.I_SYS_IDV, 
      gcv.i_pln, 
      gcv.c_typ_cov, 
      gcv.d_eff, 
      gcv.d_eff_pln, 
      gcv.c_sta, 
      gcv.d_sta, 
      gcv.c_mde_bft_fst, 
      gcv.a_bft_fst, 
      gcv.c_mde_bft_sec, 
      gcv.a_bft_sec, 
      gcv.c_mde_bft_trd, 
      gcv.a_bft_trd, 
      gcv.p_cre_hom, 
      gcv.c_cl_rsk, 
      gpv.c_val, 
      gpv.i_val, 
      gcv.c_pol, 
      gpv.i_prv 



      FROM Pearl_P.tltc906_gcv gcv, 
      pearl_p.tltc912_gpv gpv 

       WHERE gcv.i_pln > 0 
      AND gcv.i_pln = gpv.i_pln 
      and gpv.i_prv = '36' 
      and gcv.c_pol between 'lac100001' and 'lac100004' 

     UNION 

      SELECT 
      gcv.I_SYS_IDV, 
      gcv.i_pln, 
      gcv.c_typ_cov, 
      gcv.d_eff, 
      gcv.d_eff_pln, 
      gcv.c_sta, 
      gcv.d_sta, 
      gcv.c_mde_bft_fst, 
      gcv.a_bft_fst, 
      gcv.c_mde_bft_sec, 
      gcv.a_bft_sec, 
      gcv.c_mde_bft_trd, 
      gcv.a_bft_trd, 
      gcv.p_cre_hom, 
      gcv.c_cl_rsk, 
      gcv.c_pol, 
      gpv.i_val, 
      gpv.i_pln, 
      gpv.i_prv 


     FROM Pearl_P.tltc906_gcv gcv, 
     pearl_p.tltc912_gpv gpv 


      where NOT EXISTS(
      SELECT 1 
      FROM pearl_p.tltc906_gcv gcv, 
      pearl_p.tltc912_gpv gpv 

      WHERE gcv.i_pln > 0 
      AND gcv.i_pln = gpv.i_pln 
      and gpv.i_prv = '36' 
      ) 
     ) with data 
PRIMARY INDEX (i_sys_idv) 
on commit preserve rows; 
+1

苦情は必ずしも列数に分離されているわけではありません。列は正しい順序でありますか?例えば最初のクエリのgpv.c_valを2番目のクエリのgcv.c_polと同じ列にしますか?データ型が互換性がありますか?私は、ユニオンからのクエリを削除し、それが動作するまで(もちろん、外部の作成/コミットなしの選択のみ)実行することをお勧めします。 –

答えて

0

2番目のSELECT文の最後の4つの値は、あなたの中のものと一致しません最初のステートメント。(エイリアスを使用して)それらの列を同じもの(ペアリング)に名前を付けてみてください。結合するには、セット間に同じ列を持つ必要があります。

チェックアウト:http://msdn.microsoft.com/en-us/library/ms180026.aspx

を以下のUNIONを使用して、2つの クエリの結果セットを結合するための基本的なルールです:

数と列の順序は、すべてに同じでなければなりませんクエリは です。

データ型は互換性がなければなりません。

0

あなたは、各列のデータ型を確認してください。データ型は、各SELECT文の間に互換性がなければなりません。

+0

2番目のクエリからi_prvを削除して ''を追加すると – gfuller40

0

クエリの両方の部分で各列のデータ型が同じですか?

カラム名の最初の文字がデータタイプ(i =整数、c =文字など)を示している場合、問題が選択リストの最後の2番目のカラムにあると推測しています。最初のクエリはgcv.c_polを選択し、2番目のクエリはgpv.i_plnを選択します。

0

コメントアウト行が動作するまで開始します。つまり、各選択リストのすべてのフィールドをコメントアウトし、次に1つずつ、最初のコメントを外し、次に2番目のコメントを外します。それは最終的に見つかるでしょう。

関連する問題