Использование оператора CASE с isnull и else



У меня есть столбец [Color], который содержит 'Black', 'Red', NULL, 'WW','RR'



Я хочу иметь колонку, которая должна иметь



if color black then 'B'
if color red then 'r'
if color is Null then 'Empty'
for all other entries 'n/a'


Я использую follwoing, но он показывает ошибку



SELECT Name,
CASE color
WHEN 'black' THEN 'b'
WHEN 'red' THEN 'r'
WHEN ISNULL(color, 'empty')
else 'n/a'
END AS Color_code
FROM SalesLT.Product;
518   2  

2 ответов:

Для этого можно использовать любую структуру CASE, но вы не можете вызвать функцию, если используете подход CASE fieldname WHEN, поэтому вы можете использовать либо CASE WHEN fieldname condition:

SELECT Name,
        CASE WHEN color = 'black' THEN 'b'
            WHEN color = 'red' THEN 'r'
            WHEN color IS NULL THEN  'empty'
            else 'n/a'
           END AS Color_code
FROM SalesLT.Product;

Или:

SELECT Name,
        CASE color
            WHEN 'black' THEN 'b'
            WHEN 'red' THEN 'r'
            WHEN NULL THEN 'empty'
            else 'n/a'
           END AS Color_code
FROM SalesLT.Product;

Можно попробовать так

  SELECT Name,
          CASE 
              WHEN color = 'black' THEN 'b'
              WHEN color = 'red' THEN 'r'
              WHEN color is null  THEN  'empty'
                ELSE 'n/a'
          END AS Color_code
  FROM SalesLT.Product;

Comments

    Ничего не найдено.