SQL Case с условиями - PullRequest
1 голос
/ 15 мая 2009

У меня настроен запрос, содержащий оператор CASE, который работает 95% времени ... Остальные 5% связаны с отсутствием данных. Есть другие данные, которые указывают на указатели, которые помогут ... Я просто знаю, возможно ли это ...

Итак: СЛУЧАЙ PRDE.STATUSCODE, КОГДА 'A' THEN ОБРАЩАЕТСЯ 'КОГДА' D 'THEN' УДАЛЕН 'КОГДА' P 'THEN' В ожидании 'КОГДА' S 'THEN' Удовлетворен 'WHEN' T 'THEN' УСТАНОВЛЕН 'END AS STATUS

Иногда это поле '', но может быть заполнено текстовое поле с именем SATISFIEDDATE ... Могу ли я написать здесь что-то вроде: CASE '' THEN [if SATISFIEDDATE <> '' then 'Satisfied']

Извините, если это глупо просто ...:)

Ответы [ 5 ]

2 голосов
/ 15 мая 2009
CASE
    WHEN PRDE.STATUSCODE='A' THEN 'Appealed'
    WHEN PRDE.STATUSCODE='D' THEN 'Dismissed'
    WHEN PRDE.STATUSCODE='P' THEN 'Pending'
    WHEN PRDE.STATUSCODE='S' OR (PRDE.STATUSCODE='' AND LEN(SatisfiedDate)>0) THEN 'Satisfied'
    WHEN PRDE.STATUSCODE='T' THEN 'Settled'
    ELSE '?null/unknown?'
END AS STATUS
1 голос
/ 15 мая 2009

У вас может быть другой оператор CASE:

CASE '' THEN CASE WHEN SatisfiedDate != '' THEN 'Satisfied' END

Альтернатива будет такой:

CASE
    WHEN PRDE.STATUSCODE = 'A' THEN 'Appealed'
    WHEN PRDE.STATUSCODE = 'D' THEN 'Dismissed'
    WHEN PRDE.STATUSCODE = 'P' THEN 'Pending'
    WHEN PRDE.STATUSCODE = 'S'
       OR (PRDE.STATUSCODE = '' AND SatisfiedDate != '') THEN 'Satisfied'
    WHEN PRDE.STATUSCODE = 'T' THEN 'Settled'
END AS STATUS
0 голосов
/ 16 мая 2009

Может быть, это то, что вы ищете:

CASE PRDE.STATUSCODE 
WHEN 'A' THEN 'Appealed' 
WHEN 'D' THEN 'Dismissed' 
WHEN 'P' THEN 'Pending' 
WHEN 'S' THEN 'Satisfied' 
WHEN 'T' THEN 'Settled' 
WHEN '' AND NULLIF(PRDE.SATISFIEDDATE, '') IS NOT NULL THEN 'Satisfied' END AS STATUS
0 голосов
/ 15 мая 2009

вы можете сделать следующие операторы case, либо в вашем предложении else, либо в предложении when

CASE PRDE.STATUSCODE 
    WHEN 'A' THEN 'Appealed' 
    WHEN 'D' THEN 'Dismissed' 
    WHEN 'P' THEN 'Pending' 
    WHEN 'S' THEN 'Satisfied' 
    WHEN 'T' THEN 'Settled' 
    else
        case 
            when SATISFIEDDATE is not null then 'Satisfied'
        end
END AS STATUS
0 голосов
/ 15 мая 2009

Вы можете использовать ELSE

ELSE else_result_expression

В else_result_expression вы можете поместить любое допустимое юридическое выражение, включая то, что вы написали.

http://www.databasejournal.com/features/mssql/article.php/3288921/T-SQL-Programming-Part-5---Using-the-CASE-Function.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...