2011-01-28 8 views
0

Crystal Reportsファイルの一部を作成するために必要なDB2 SQLクエリがありますデータベースエキスパートのAddコマンドを使用します。次のように私のクエリは行く:それは、基礎となるDB2データセンターに対してクエリを検証しようとしたとき、私は、データベースエキスパートから入手Crystal Reportsのエラーメッセージ同封 DB2:詳細:42S22:[IBM] [CLIドライバ] [DB2] SQL0206N {colname}が使用されているコンテキストで無効です

select "V_SIA_HIST_UTIL"."ID_HISTQ_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."PRENM_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."NM_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."CD_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."DH_DERNI_MODIF_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."ID_HIST_UTILT_GIA_PAREN" 
     , "pag"."nom_type" 
     , "pag"."nom" 
     , "pag"."description" 
     , "pag"."nom_affiche" 
     , "pag"."tri" 
     , "pag"."id_utilisateur" 
from "TEST"."V_SIA_HIST_UTIL" 
    full outer join (
     select "p"."nom_type" 
        , "p"."nom" 
        , "p"."description" 
        , "p"."nom_affiche" 
        , "p"."tri" 
        , "p"."id_utilisateur" 
      from (
       select 'p' as "nom_type" 
          , "V_SIA_HST_ROL_SECU"."NM_ROLE_SECUR_GIA" as "nom" 
          , CAST(NULL AS VARCHAR(128)) as "description" 
          , CAST(NULL AS VARCHAR(128)) as "nom_affiche" 
          , 0 as "tri" 
          , "V_SIA_JC_ROLS_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur" 
        from "TEST"."V_SIA_HST_ROL_SECU" 
         inner join "TEST"."V_SIA_JC_ROLS_UTIL" on "V_SIA_JC_ROLS_UTIL"."ID_HISTQ_ROLE_SECUR_GIA" = "V_SIA_HST_ROL_SECU"."ID_HISTQ_ROLE_SECUR_GIA" 
       union 
       select 'a' as "nom_type" 
          , "V_SIA_HST_ASG_RESS"."NM_ASSGN_RESRC_GIA" as "nom" 
          , "V_SIA_HST_ASG_RESS"."DESCN_ASSGN_RESRC_GIA" as "description" 
          , "V_SIA_HST_ASG_RESS"."NM_AFFIC_ASSGN_GIA" as "nom_affiche" 
          , 1 as "tri" 
          , "V_SIA_JC_ASSG_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur" 
        from "TEST"."V_SIA_HST_ASG_RESS" 
         inner join "TEST"."V_SIA_JC_ASSG_UTIL" on "V_SIA_JC_ASSG_UTIL"."ID_HIST_ASSGN_RESRC_GIA" = "V_SIA_HST_ASG_RESS"."ID_HIST_ASSGN_RESRC_GIA" 
       union 
       select 'g' as "nom_type" 
          , "V_SIA_HST_GRP_SECU"."NM_GROUP_SECUR_GIA" as "nom" 
          , CAST(NULL AS VARCHAR(128)) as "description" 
          , CAST(NULL AS VARCHAR(128)) as "nom_affiche" 
          , 2 as "tri" 
          , "V_SIA_JC_GRPS_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur" 
        from "TEST"."V_SIA_HST_GRP_SECU" 
         inner join "TEST"."V_SIA_JC_GRPS_UTIL" on "V_SIA_JC_GRPS_UTIL"."ID_HISTQ_GROUP_SECUR_GIA" = "V_SIA_HST_GRP_SECU"."ID_HISTQ_GROUP_SECUR_GIA" 
      ) "p" 
    ) "pag" on "pag"."id_utilisateur" = "V_SIA_HIST_UTIL"."ID_HISTQ_UTILT_GIA" 

は、データの取得に失敗しました。データベースから。
詳細:42S22:[IBM] [CLIドライバー] [DB2] SQL0206N
"V_SIA_HST_ROL_SECU.NM_ROLE_SECUR_GIA" は、それが使用されている
コンテキストでは有効ではありません。 SQLSTATE = 42703
[データベースベンダーコード:-206]

私はこれらの提案の原因のいずれかが私のクエリには適用されないように思われること言及を忘れてしまいました。
DB2 SQL-Error: -206 SQLState: 42703

同じクエリは、この問題を解決する方法についてのSQL Server 2005の

に対してうまくどれ手掛かりを実行しますか?これは初めてのDB2の経験ですが、今朝DB2 Data Center Client(DB2 Connect)をインストールしたばかりです。

ありがとうございました! =)

答えて

1

クエリが両方のプラットフォームで同一であることを証明します。 'diff'はあなたの友人です。

これらが同じ場合、その列は実際には「TEST」テーブルにありますか?「V_SIA_HST_ROL_SECU」?そうでない場合は、エラーが発生します。

クエリが別のプラットフォーム(または別のデータベースでさえも)でうまく動作するということは、おそらく2つのデータベースの間に異なるものがあることを意味します。ここのエラーは、それが構造の違いかもしれないことを示唆している。

次に、私はその列と他の "nom"列を削除しようとします。エラーメッセージで指定された列がない場合、クエリが何を行うかを確認します。この考え方は、クエリが機能するまで一度に1つずつ簡略化(短縮)することです。 (あるいは何もせずに始めて、一度に1つずつクエリを構築してから壊れないようにしてください)

+0

はい、間違いありません。私はそれを確認できるように確認しました。あなたのご意見ありがとうございます。 =) –

+0

2つのクエリが同一であることを示すために私の答えを編集しました。これは、2つのプラットフォームを比較しているときに最初に行うべきことです。 –

+0

+1ウォークスルーソリューションの場合。このアプローチは、一度だけ価値があることが証明されています。私は自分がどう考えなかったかを理解できません。 = \ありがとう!私はこれを試してみる。 –

関連する問題