0

エラーが発生する理由がわかりません

「指定されたフィールドqb2.WellworkOILは、SQLステートメントのFROM句にリストされている複数のテーブルを参照している可能性があります。」

以下のクエリに基づく

SELECT 
    qb1.CompanyName, 
    qb1.AssetName, 
    qb1.Year, 
    IIf(qb1.PrimaryProductionType='Oil', 
        qb2.WellworkOIL, 
        IIF(qb1.PrimaryProductionType='Gas', 
            qb3.WellworkGAS, 
            qb4.WellworkOilGas)) AS Selected
FROM 
    (
        (
            PEBaseQueryConditions AS qb1 
            INNER JOIN PE_Field_WellworkOIL AS qb2 
            ON (qb1.Year=qb2.Year) AND (qb1.AssetName=qb2.AssetName)
        ) 
        INNER JOIN PE_Field_WellworkGAS AS qb3 
        ON (qb1.Year=qb3.Year) AND (qb1.AssetName=qb3.AssetName)
    ) 
    INNER JOIN PE_Field_WellworkOILGAS AS qb4 
    ON (qb1.Year=qb4.Year) AND (qb1.AssetName=qb4.AssetName)
GROUP BY 
    qb1.CompanyName, 
    qb1.AssetName, 
    qb1.Year, 
    qb1.PrimaryProductionType,
    qb2.WellworkOIL, 
    qb3.WellworkGAS, 
    qb4.WellworkOilGas;
4

2 に答える 2

0

これを試す時間はありません (これが機能しない場合は申し訳ありません) が、そのエイリアス構文は前に見たことがありません (「AS」は必要ないと思います) - これを試してください;

SELECT qb1.CompanyName, qb1.AssetName, qb1.Year, 
       IIf(qb1.PrimaryProductionType='Oil', qb2.WellworkOIL, 
             IIF(qb1.PrimaryProductionType='Gas', qb3.WellworkGAS, 
                           qb4.WellworkOilGas)) AS Selected

FROM PEBaseQueryConditions qb1 
INNER JOIN PE_Field_WellworkOIL qb2 ON (qb1.Year=qb2.Year AND qb1.AssetName=qb2.AssetName)
INNER JOIN PE_Field_WellworkGAS qb3 ON (qb1.Year=qb3.Year AND qb1.AssetName=qb3.AssetName) 
INNER JOIN PE_Field_WellworkOILGAS qb4 ON (qb1.Year=qb4.Year AND qb1.AssetName=qb4.AssetName)

また、Jon Woo の提案によると、集計関数 (COUNT、SUM など) を使用していない場合は、「group by」は必要ありません。

編集:括弧を失うこともできます

于 2012-08-30T15:47:35.853 に答える
0

あなたのGROUP BY条項を取り除くことで問題を解消できると思います。集計関数を使用していないため、group by は必要ありません。

SELECT 
    qb1.CompanyName, 
    qb1.AssetName, 
    qb1.Year, 
    IIf(qb1.PrimaryProductionType='Oil', 
        qb2.WellworkOIL, 
        IIF(qb1.PrimaryProductionType='Gas', 
            qb3.WellworkGAS, 
            qb4.WellworkOilGas)) AS Selected
FROM    PEBaseQueryConditions AS qb1 
            INNER JOIN PE_Field_WellworkOIL AS qb2 
                 ON (qb1.Year=qb2.Year) AND (qb1.AssetName=qb2.AssetName)
            INNER JOIN PE_Field_WellworkGAS AS qb3 
                 ON (qb1.Year=qb3.Year) AND (qb1.AssetName=qb3.AssetName)
            INNER JOIN PE_Field_WellworkOILGAS AS qb4 
                 ON (qb1.Year=qb4.Year) AND (qb1.AssetName=qb4.AssetName)
于 2012-08-30T15:44:59.797 に答える