Expresión condicional CASE - Amazon Redshift

Expresión condicional CASE

La expresión CASE es una expresión condicional similar a las instrucciones if/then/else que se encuentran en otros lenguajes. CASE se utiliza para especificar un resultado cuando hay condiciones múltiples. Utilice CASE cuando una expresión SQL sea válida, como en un comando SELECT.

Existen dos tipos de expresiones CASE: simple y buscada.

  • En expresiones CASE simples, una expresión se compara con un valor. Cuando hay una coincidencia, se aplica la acción especificada en la cláusula THEN. Si no se encuentra coincidencia, se aplica la acción en la cláusula ELSE.

  • En las expresiones CASE buscadas, cada CASE se evalúa según una expresión booleana, y la instrucción CASE devuelve el primer CASE que coincida. Si no hay ninguna coincidencia entre las cláusulas WHEN, se devuelve la acción en la cláusula ELSE.

Sintaxis

Instrucción CASE simple utilizada para hacer coincidir condiciones:

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

Instrucción CASE buscada utilizada para evaluar cada condición:

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

Argumentos

expresión

Un nombre de columna o cualquier expresión válida.

value

Valor con el que se compara la expresión, como una constante numérica o una cadena de caracteres.

result

El valor destino o la expresión que se devuelve cuando se evalúa una expresión o una condición booleana. Los tipos de datos de todas las expresiones de resultado deben poder convertirse a un único tipo de salida.

condition

Expresión booleana que se evalúa como true o false. Si el argumento condition es verdadero, el valor de la expresión CASE es el resultado que sigue a la condición y el resto de la expresión CASE no se procesa. Si el argumento condition es falso, se evalúan las cláusulas WHEN subsiguientes. Si ningún resultado de la condición WHEN es verdadero, el valor de la expresión CASE será el resultado de la cláusula ELSE. Si se omite la cláusula ELSE y ninguna condición es verdadera, el resultado será nulo.

Ejemplos

En los siguientes ejemplos se utilizan las tablas VENUE y SALES de los datos de muestra de TICKIT. Para obtener más información, consulte Base de datos de muestra.

Use una expresión CASE simple para reemplazar New York City por Big Apple en una consulta de la tabla VENUE. Reemplace todos los demás nombres de ciudad 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 ...

Utilice una expresión CASE buscada para asignar números de grupo según el valor PRICEPAID para ventas de tickets individuales:

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 ...