Expressão condicional CASE - Amazon Redshift

Expressão condicional CASE

A expressão CASE é uma expressão condicional, semelhante às instruções if/then/else encontradas em outras linguagens. CASE é usada para especificar um resultado onde há várias condições. Use CASE onde uma expressão SQL é válida, como em um comando SELECT.

Há dois tipos de expressões CASE: simples e pesquisada.

  • Em expressões CASE simples, uma expressão é comparada a um valor. Quando uma correspondência é encontrada, a ação especificada na cláusula THEN é aplicada. Se nenhuma correspondência é encontrada, a ação especificada na cláusula ELSE é aplicada.

  • Em expressões CASE pesquisadas, cada CASE é avaliado com base em uma expressão booleana e a instrução CASE retorna o primeiro CASE correspondente. Se nenhuma correspondência for encontrada entre as cláusulas WHEN, a ação na cláusula ELSE será retornada.

Sintaxe

Instrução CASE simples usada para correspondência de condições:

CASE expression WHEN value THEN result [WHEN...] [ELSE result] END

Instrução CASE pesquisada usada para avaliação de cada condição:

CASE WHEN condition THEN result [WHEN ...] [ELSE result] END

Argumentos

expressão

Um nome de coluna ou qualquer expressão válida.

value

Valor ao qual a expressão é comparada, tal como uma constante numérica ou string de caracteres.

resultado

O valor ou uma expressão de destino retornado quando uma expressão ou condição booleana é avaliada. Os tipos de dados de todas as expressões de resultados devem poder ser convertidos em um único tipo de saída.

condição

Uma expressão booliana que avalia como verdadeiro ou falso. Se a condição for verdadeira, o valor da expressão CASE será o resultado que segue a condição e o restante da expressão CASE não será processado. Se a condição for falsa, todas as cláusulas WHEN subsequentes serão avaliadas. Se nenhum resultado da condição WHEN for verdadeiro, o valor da expressão CASE será o resultado da cláusula ELSE. Se a cláusula ELSE for omitida e não nenhuma condição for verdadeira, o resultado será nulo.

Exemplos

Os exemplos a seguir usam a tabela VENUE e a tabela SALES dos dados de amostra TICKIT. Para obter mais informações, consulte Banco de dados de exemplo.

Use uma expressão CASE simples para substituir New York City por Big Apple em uma consulta da tabela VENUE. Substitua todos os outros nomes de cidade por other.

select venuecity, case venuecity when 'New York City' then 'Big Apple' else 'other' end from venue order by venueid desc; venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...

Use uma expressão CASE pesquisada para atribuir números de grupo com base no valor PRICEPAID para vendas individuais de ingresso:

select pricepaid, case when pricepaid <10000 then 'group 1' when pricepaid >10000 then 'group 2' else 'group 3' end from sales order by 1 desc; pricepaid | case ----------+--------- 12624 | group 2 10000 | group 3 10000 | group 3 9996 | group 1 9988 | group 1 ...