Использование функции CASE

Выражение CASE используется для оценки нескольких условий и возвращает одно значение для каждого условия. Например, оно позволяет отображать альтернативное значение в зависимости от значения столбца. Это временное изменение в данных, оно не сохраняется навсегда.

Выражение CASE состоит из:

  • ключевого слова CASE;

  • имени преобразуемого столбца;

  • предложений WHEN, которые задают выражения для поиска, и предложений THEN, которые задают выражения для замены;

  • необязательного предложения ELSE, которое определяет условие, возвращаемое, если ни одна из операций сравнения не дает значение TRUE;

  • ключевого слова END;

  • необязательного предложения AS, задающего псевдоним для выражения CASE.

Обычно выражение CASE используется для замены кодов или аббревиатур c легко читаемыми значениями. В следующих примерах с помощью функции CASE изменяется способ отображения категорий линейки продуктов с целью сделать их более понятными.

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

Еще одно назначение функции CASE — категоризация данных. В следующем примере функция CASE используется для категоризации цен.

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Name, 'Price Range' = 
      CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END
FROM Production.Product
ORDER BY ProductNumber ;
GO

Дополнительные примеры см. в разделе Выражение CASE (Transact-SQL).