1

以下のように複数の結合を持つ大きなクエリがあります。次に、このクエリを調整する必要があります。

現在のロジックは次のとおりです。AppealOutcomeCode=F / D / Pの場合、ReAdjustedClaimControlNumberを挿入します。

ロジックを次のように変更する必要があります。DispositionF/D/ Pの場合、MonthlyApepalFileからReAdjustmentIdが空の場合は、AdjustmentIDを使用します。AdjustIdも空の場合は、ClaimControlNumberを使用します。

誰かがショートカットを投げてもらえますか?

Insert into rec.RecoveryClaims (ClaimControlKey, ClaimOutcomeCode, ClaimControlNumber )
select 
             A.ClaimControlKey
             ,ClaimOutcomeCode

            ,CASE   WHEN E.AppealOutcomecode = 'F' THEN E.ReadjustedClaimControlNumber
                    WHEN E.AppealOutcomecode = 'D' THEN E.ReadjustedClaimControlNumber
                    WHEN E.AppealOutcomecode = 'P' THEN E.ReadjustedClaimControlNumber
                    ELSE E.AdjustedClaimControlNumber
                    END  
FROM rec.RecoveryClaims A 
INNER JOIN @ExistingRecoveryClaimControlKey b 
    on a.RecoveryClaimControlKey = b.RecoveryClaimControlKey
INNER JOIN occ.Claims C 
    on c.ClaimControlKey = A.ClaimControlKey
INNER JOIN @OutputRecoveryCases D 
    on D.CaseID = C.CaseId  
INNER JOIN @NewClaimControlNumbers E 
    ON C.CaseId = E.CaseID 
    AND A.ClaimControlKey = E.ClaimControlKey 
4

1 に答える 1

3

CASE次を使用して、そのステートメントを折りたたむことができますIN

,CASE   WHEN E.AppealOutcomecode IN ('F', 'D', 'P') 
        THEN E.ReadjustedClaimControlNumber
        ELSE E.AdjustedClaimControlNumber
END 

次に、あなたの要件を理解できれば、次の部分は次のようになります。

,CASE   WHEN Disposition IN ('F', 'D', 'P') 
        THEN COALESCE(ReAdjustmentId , AdjustmentID, ClaimControlNumber)
END

編集:

の代わりに文字列が空の場合は、次と組み合わせてNULL使用​​できます。NULLIFCOALESCE

,CASE   WHEN Disposition IN ('F', 'D', 'P') 
        THEN COALESCE(
            NULLIF(ReAdjustmentId, '') , 
            NULLIF(AdjustmentID, ''), 
            NULLIF(ClaimControlNumber, '')
        )
END
于 2013-01-30T21:20:09.057 に答える