2016-08-02 4 views
0

ここでエラーが発生しました。 '列またはグローバル変数grc#が見つかりません'ここでは正しくありません。変数が結合レベルで動作する必要があります

SELECT "OEINH2"."IHDOCD", "OEINH2"."IHINV#", "ADRES1"."ADINTA", "ADRES1"."ADENT#", "ADRES1"."ADSFX#", adres1.adent# concat adres1.adsfx# as "grc#" 
    FROM 
"ASTDTA"."OEINH2" "OEINH2" INNER JOIN "ASTDTA"."ADRES1" "ADRES1" ON "OEINH2"."IHGRC#"= "grc#" 
    WHERE ("OEINH2"."IHDOCD">=20160722 AND "OEINH2"."IHDOCD"<=201600801) 

答えて

1

FROM句には列エイリアスを使用できません。

SELECT "OEINH2"."IHDOCD", "OEINH2"."IHINV#", "ADRES1"."ADINTA", "ADRES1"."ADENT#", 
     "ADRES1"."ADSFX#", adres1.adent# concat adres1.adsfx# as "grc#" 
FROM "ASTDTA"."OEINH2" "OEINH2" INNER JOIN 
    "ASTDTA"."ADRES1" "ADRES1" 
    ON "OEINH2"."IHGRC#"= adres1.adent# concat adres1.adsfx# 
WHERE "OEINH2"."IHDOCD" >= 20160722 AND "OEINH2"."IHDOCD" <= 201600801; 

注:あなたのクエリは単純な表の別名(テーブル名の1つのまたは2文字の略語)とし、すべての二重引用符なしで読みやすくなりますが、しかし、表現を繰り返すことができます。

0

すでに受け入れられている回答では十分に説明されていますが、制限事項を克服する上で次のような追加の価値があるかもしれません。

A派生テーブル式は、その識別子にSELECTクエリ内の他の場所の参照を有効にすると、[従って回避式の繰り返し符号化を避けるために、式に識別子 []を割り当てるために使用することができます潜在的な困難は要求から生じることがあります。デュアル定期的な表現の維持;例えば派生テーブルとして[ネストされたテーブル式(NTE)]を使用します(構文チェックのみ)。

SELECT "OEINH2"."IHDOCD", "OEINH2"."IHINV#" 
     , NTE."ADINTA", NTE."ADENT#", NTE."ADSFX#" 
     , NTE."grc#" 
     /* Above two lines could be replaced with just: NTE.* */ 
    FROM "ASTDTA"."OEINH2" "OEINH2" 
    INNER JOIN 
     (SELECT "ADRES1"."ADINTA", "ADRES1"."ADENT#" 
       , "ADRES1"."ADSFX#" 
       , adres1.adent# concat adres1.adsfx# as "grc#" 
      FROM "ASTDTA"."ADRES1" "ADRES1" 
     ) AS NTE 
     ON "OEINH2"."IHGRC#" = NTE."grc#" 
    WHERE "OEINH2"."IHDOCD" BETWEEN 20160722 AND 201600801 
関連する問題