Treinamento para consultas com SQL Server - Parte 6 - CASE

Em linguagens de programação como o C e C# este conjunto de instruções serve para testar vários valores de uma mesma variável e executar um bloco específico de instruções.

Na Linguagem SQL, CASE é usado para testar o valor de uma expressão e retornar um valor escalar conforme o resultado obtido. Este tipo é útil principalmente quando códigos que detém a regra de negócios são armazenados no banco e não possuem tabelas relacionadas.

Sua sintaxe básica segue o padrão demonstrado a seguir:

CASE <expressão>
 WHEN <valor1> THEN <Retorno1>
 WHEN <.valor2> THEN <Retorno2>
  …
 WHEN <valorn> THEN <retornon>
 -- ELSE é OPCIONAL
 ELSE <Retorno alternativo>
END

Podem existir quantos WHEN forem necessários, mas, o valor a ser testado precisa ser escalar, ou seja, um valor simples, não pode ser uma expressão ou um rowset.

Na tabela PERSON.PERSON existe a coluna PersonType que armazena o tipo de pessoa que os dados representam. Esta coluna não possui relacionamento sendo que o seu valor está definido nos comentários do design da tabela. A instrução abaixo representa como usar a CASE para obter os valores corretos.

select concat(FirstName, ' ', LastName) as CompleteName
 ,case PersonType
  when 'SC' then 'Store Contact'
  when 'IN' then 'Individual (retail) customer'
  when 'SP' then 'Sales person'
  when 'EM' then 'Employee (non-sales)'
  when 'VC' then 'Vendor contact'
  when 'GC' then 'General contact'
  else 'Undefined'
 end as PersonTypeName
from Person.Person
order by CompleteName

Esta consulta traz o resultado da Figura a seguir que demonstra as primeiras linhas retornadas.