Oracle – Usando a expressão Case

USANDO A EXPRESSÃO CASE
A expressão CASE executa a lógica if-then-else em SQL .
A expressão CASE funciona de maneira semelhante a DECODE(), mas você deve
usar CASE porque ela é compatível com o padrão ANSI e faz parte do padrão SQL/92. Além disso,
a expressão CASE é mais fácil de ler. Existem dois tipos de expressões CASE:

? Expressões case simples, que usam expressões para determinar o valor retornado
? Expressões case pesquisadas, que usam condições para determinar o valor retornado

Você vai aprender sobre esses dois tipos de expressões CASE a seguir.
Usando expressões CASE simples
As expressões CASE simples usam expressões incorporadas para determinar o valor a ser retornado.
Elas têm a seguinte sintaxe:

CASE expressão_pesquisa
WHEN expressão1 THEN resultado1
WHEN expressão2 THEN resultado2

WHEN expressãoN THEN resultadoN
ELSE resultado_padrão
END

onde
? expressão_pesquisa é a expressão a ser avaliada.

? expressão1, expressão2,…, expressãoN são as expressões a serem avaliadas em
relação à expressão_pesquisa.

? resultado1, resultado2,…, resultadoN são os resultados retornados (um para
cada expressão possível). Se expressão1 for avaliada como expressão_pesquisa, o resultado1
será retornado e do mesmo modo para as outras expressões.

? resultado_padrão é retornado quando nenhuma expressão correspondente é encontrada.
O exemplo a seguir mostra uma expressão CASE simples que retorna os tipos de produto
como nomes:

SELECT product_id, product_type_id,
  CASE product_type_id
    WHEN 1 THEN 'Book'
    WHEN 2 THEN 'Video'
    WHEN 3 THEN 'DVD'
    WHEN 4 THEN 'CD'
    ELSE 'Magazine'
  END
 FROM products;

PRODUCT_ID PRODUCT_TYPE_ID CASEPROD
 ---------- --------------- --------
 1 1 Book
 2 1 Book
 3 2 Video
 4 2 Video
 5 2 Video
 6 2 Video
 7 3 DVD
 8 3 DVD
 9 4 CD
 10 4 CD
 11 4 CD
 12 Magazine

Usando expressões CASE pesquisadas
As expressões CASE pesquisadas utilizam condições para determinar o valor retornado. Elas têm a
seguinte sintaxe:

CASE
WHEN condição1 THEN resultado1
WHEN condição2 THEN resultado2

WHEN condiçãoN THEN resultadoN
ELSE resultado_padrão
END

onde
? condição1, condição2,…, condiçãoN são as expressões a serem avaliadas.
? resultado1, resultado2,…, resultadoN são os resultados retornados (um para
cada condição possível). Se condição1 é verdadeira, o resultado1 é retornado e do
mesmo modo para as outras expressões.
? resultado_padrão é retornado quando nenhuma condição retorna verdadeiro.
O exemplo a seguir ilustra o uso de uma expressão CASE pesquisada:

SELECT product_id, product_type_id,
 CASE
   WHEN product_type_id = 1 THEN 'Book'
   WHEN product_type_id = 2 THEN 'Video'
   WHEN product_type_id = 3 THEN 'DVD'
   WHEN product_type_id = 4 THEN 'CD'
 ELSE 'Magazine'
 END
FROM products;

PRODUCT_ID PRODUCT_TYPE_ID CASEPROD
 ---------- --------------- --------
 1 1 Book
 2 1 Book
 3 2 Video
 4 2 Video
 5 2 Video
 6 2 Video
 7 3 DVD
 8 3 DVD
 9 4 CD
 10 4 CD
 11 4 CD
 12 Magazine

Você pode usar operadores em uma expressão CASE pesquisada, como mostra o exemplo a seguir:

SELECT product_id, price,
 CASE
 WHEN price > 15 THEN 'Expensive'
 ELSE 'Cheap'
 END
 FROM products;

 

Referências:  Oracle Database 11g SQL