CASE (Azure Stream Analytics)
Evalúa una lista de condiciones y devuelve una de las varias expresiones de resultado posibles.
La expresión CASE tiene dos formatos:
La expresión CASE sencilla compara una expresión con un conjunto de expresiones sencillas para determinar el resultado.
La expresión CASE buscada evalúa un conjunto de expresiones booleanas para determinar el resultado.
Ambos formatos requieren un argumento ELSE.
CASE se puede utilizar en cualquier instrucción o cláusula que permite una expresión válida. Por ejemplo, puede usar CASE en expresiones como SELECT y en cláusulas como WHERE y HAVING.
Sintaxis
Expresión CASE simple:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
ELSE else_result_expression
END
Expresión CASE buscada:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
ELSE else_result_expression
END
Argumentos
input_expression
Es la expresión evaluada cuando se utiliza el formato CASE sencillo. El valor evaluado se compara con el when_expression.
WHEN when_expression
Es la expresión a la que se compara input_expression al usar el formato CASE simple. Los tipos del when_expressions no tienen que coincidir necesariamente.
WHEN boolean_expression
Es la expresión booleana evaluada al usar el formato CASE buscado. Si esta expresión se evalúa como true, se devuelve el result_expression correspondiente.
THEN result_expression
Es la expresión devuelta cuando input_expression es igual a when_expression (en el formato CASE simple) o cuando boolean_expression se evalúa como true (en el formato CASE buscado).
ELSE else_result_expression
Es la expresión devuelta si ninguna de las condiciones evaluadas como TRUE.
Tipo de valor devuelto
Es el tipo de prioridad más alto del conjunto de tipos de result_expression y else_result_expression.
Ejemplos
Usar select con una expresión CASE simple:
SELECT
CASE vehicleType
WHEN 'S' THEN 'Sedan'
WHEN 'T' THEN 'Truck'
WHEN 'V' THEN 'Van'
ELSE NULL
END as vehicleTypeName
FROM vehicles
Uso de select con la expresión CASE buscada:
SELECT
CASE
WHEN temperature < 60 THEN 'Alert'
ELSE 'OK'
END as currentStatus
FROM sensor