2012-08-26 2 views
2

안녕하세요 여러분,이 IF 문을 코딩하는 데 도움이 될 수 있습니다! 나는 조건 중 2 가지에 잘 맞았는데, 어떻게 3 차 (계산)가 적합 할 지 확신하지 못했습니다. 이것은 의사 코드의 계산입니다. 2026의 DatapointID이 UnallocatedLossesOIL 및 2027입니다대안 3 개가 포함 된 SQL IF 문

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; 

가 UnallocatedLossesGAS입니다 :

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)) 

이 내 코드입니다. 계산은 MPPOil 및 MPPGas 값을 참조해야합니다 (특정 회사/자산/연도와 관련하여 두 가지 별도의 쿼리 결과 임). 도움이 필요하시면 죄송합니다.

+0

'UnallocatedLossesOIL'은 (는) 함수이거나 inte입니까? 곱셈을 암시하기 위해 괄호에 그것의 인접성을 두는가? –

답변

1

어때요? ? 그게 가능하면 조건이 말은,이 일을해야하는 경우가 중첩 :.

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; 

MPPGasMPPOil의 값에 관해서는, 내가 그렇게 그들이 그들을 왼쪽을 찾을 경우 확실하지 않다 I

+0

+1 나는 케이스가 더 명확 할 수도 있다고 생각한다. Access가 그걸 지원한다면 – Andomar

+0

도움을 주시면 감사하겠습니다. – Magda

+0

당신은 진심으로 환영합니다. :) –