Могут ли множественные ИЛИ условия быть помещены в функцию CASE? - PullRequest
0 голосов
/ 22 марта 2019

Я думаю, что это означает, рассмотрим первый случай или второй случай или около того. Если какой-либо из них верен, верните 1. Я прав?

case when upper(casetype) = 'ADHOC_SUCCESSFUL' 
       then 1 
     when casetype like 'Boundary_Issue_T%' 
       then 1 
     when upper(casetype) like '%ACTIVE_SUC%' 
       then 1 
End as Successful

1 Ответ

1 голос
/ 22 марта 2019
Выражение

A case гарантирует, что условия оцениваются по порядку. Выражение возвращает предложение then, связанное с первым when, значение которого равно true.

В этом случае вы могли бы написать это как:

(case when upper(casetype) = 'ADHOC_SUCCESSFUL' or
           casetype like 'Boundary_Issue_T%' or
           upper(casetype) like '%ACTIVE_SUC%' 
      then 1 
 end) as Successful

Я также был бы склонен добавить else 0, поэтому результат будет либо 0 или 1, чем NULL или 1.

Redshift поддерживает логические типы, поэтому вы также можете сделать:

(upper(casetype) = 'ADHOC_SUCCESSFUL' or
 casetype like 'Boundary_Issue_T%' or
 upper(casetype) like '%ACTIVE_SUC%' 
) as Successful
...