Как улучшить оператор case, который использует два столбца

У меня есть таблица с именем Purchase, в которой есть столбец State, где 1 разрешено, 2 завершено (есть и другие значения).

У меня также есть таблица Retailer, в которой есть столбец RetailerProcessType, где 1 - одноэтапный, а 2 - двухэтапный.

У меня есть запрос ниже:

CASE purc.State
    WHEN 1 THEN '"AUTHORISED"'
    WHEN 2 THEN '"AUTHORISED"'
    WHEN 4 THEN '"AUTHORISED"'
    ELSE '"DECLINED"'
 END                                                                     
 AS Autorised_Decline_Status,

Но мне нужно сделать следующее:

WHEN STATE = 2 AND RetailerProcessType = 1 THEN '"AUTHORISED"'
WHEN STATE = 1 AND RetailerProcessType = 2 THEN '"PENDING"'
WHEN STATE = 2 AND RetailerProcessType = 2 THEN '"AUTHORISED"'
ELSE '"DECLINED"'

Единственный способ, которым я могу это сделать, - это использовать массивный оператор IF вокруг запроса, один для одноэтапного продавца, а другой для двухступенчатого, как я понимаю, предложение WHEN не может содержать в себе И .

Однако это кажется длинным; У кого-нибудь есть идеи получше?

30
задан Braiam 23 July 2019 в 14:24
поделиться