2

皆さん、この IF ステートメントをコーディングするのに本当に助けが必要です! 条件のうちの 2 つに適合することができましたが、3 つ目 (計算) がどのように適合するかはわかりません。これは疑似コードの計算です。

IF Producer_Type = 'Oil', Unallocated OIL&GAS = UnallocatedLossesOIL
IF Producer_Type = 'Gas', Unallocated OIL&GAS = UnallocatedLossesGAS
ELSE Unallocated OIL GAS = UnallocatedLossesOIL(MPPOil ÷ (MPPOil + MPPGas)) + 
UnallocatedLossesGAS(MPPGas ÷ (MPPOil + MPPGas))

これは私のコードです:

SELECT qb1.CompanyName, qb1.AssetName, qb1.Year, 
IIf(qb1.Producer_Type='Oil',qb1.DatapointValue, qb2.DatapointValue) AS UnallocatedOilGas
FROM PEBaseQuery AS qb1 INNER JOIN PEBaseQuery AS qb2 ON qb1.Assetname=qb2.AssetName
WHERE qb1.DatapointID=2026 And qb2.DatapointID=2027;

2026 の DatapointID は UnallocatedLossesOIL で、2027 は UnallocatedLossesGAS です。計算では、MPPOil と MPPGas の値を参照する必要があります (2 つの別々のクエリの結果である特定の会社/資産/年に関連しています...どんな助けも大歓迎です!これのいくつかが意味をなさない場合は申し訳ありません..

4

1 に答える 1

1

if条件を入れ子にするのはどうですか?つまり、それが可能であれば、これはうまくいくはずです:

SELECT qb1.CompanyName, qb1.AssetName, qb1.Year, 
IIf(qb1.Producer_Type='Oil', qb1.DatapointValue, 
  IIF(qb1.Producer_Type='Gas', qb2.DatapointValue,
   qb1.DatapointValue * (MPPOil / (MPPOil + MPPGas)) + 
   qb2.DatapointValue * (MPPGas / (MPPOil + MPPGas)) )) AS UnallocatedOilGas
FROM PEBaseQuery AS qb1 INNER JOIN PEBaseQuery AS qb2 ON qb1.Assetname=qb2.AssetName
WHERE qb1.DatapointID=2026 And qb2.DatapointID=2027;

MPPGasとの値については、MPPOilどこにあるのかわからないので、そのままにしておきます。これがうまくいくことを願っています。

于 2012-08-26T17:36:55.700 に答える