Usando CASE

A expressão CASE é usada para avaliar várias condições e retornar um valor único para cada condição. Por exemplo, ela permite exibir um valor alternativo a ser exibido dependendo do valor de uma coluna. Essa alteração nos dados é temporária. Portanto, não há nenhuma alteração permanente nos dados.

A expressão CASE consiste em:

  • A palavra-chave CASE.

  • O nome da coluna a ser transformada.

  • As cláusulas WHEN que especificam as expressões a serem pesquisadas e as cláusulas THEN que especificam as expressões pelas quais substituí-las.

  • Uma cláusula ELSE opcional que define a expressão retornada, se nenhuma operação de comparação for avaliada como TRUE.

  • A palavra-chave END.

  • Uma cláusula AS opcional que define um alias para a expressão CASE.

Um uso comum da expressão CASE é substituir códigos ou abreviações por valores mais legíveis. O exemplo seguinte usa a função CASE para alterar a exibição de categorias de linha de produto para torná-las mais compreensíveis.

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

Outra função de CASE é categorizar dados. A consulta a seguir usa a funçãoCASE para categorizar preços.

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

Para obter mais exemplos, consulte CASE (Transact-SQL).