Условный оператор CASE для просмотра

Мне нужна помощь в написании оператора CASE для представления, которое по-разному преобразует столбец в зависимости от значения другого столбца. Например:

 CASE b.Column1 WHEN 1 THEN 'No' ELSE 'Yes' END AS Yes_or_No

Это здорово, он преобразует столбец 1 из другой таблицы в столбец с именем «Да_или_Нет», который отображает «Нет», когда столбец 1 равен 1, и «Да», когда столбец 1 равен «0» или NULL.

Проблема в том, что я хочу, чтобы это происходило только тогда, когда другой столбец в представлении, Column2, имеет значение, называемое «Dev». Таким образом, если столбец 2 имеет значение «Dev», то приведенный выше оператор CASE должен вступить в силу. Если Column2 имеет значение «Test» или «Prod», то я хочу, чтобы «Yes_or_No» было просто NULL.


person dp3    schedule 11.12.2012    source источник


Ответы (2)


Простой подход - это вложенные операторы case:

CASE WHEN Column2 = 'Dev' THEN
       case b.Column1 when 1 then 'No' else 'Yes' end
     WHEN Column2 in (  'Test', 'Prod' ) THEN 
       Null 
END  AS Yes_or_No

Для большей удобочитаемости я написал в верхнем регистре внешний case и в нижнем регистре внутренний.

person dani herrera    schedule 11.12.2012

CASE b.Column1 WHEN column2 <> 'dev' then null 
when 1 THEN 'No' 
ELSE 'Yes' END AS Yes_or_No

ссылка

person Beth    schedule 11.12.2012