CASE (Azure Stream Analytics)
Avalia uma lista de condições e retorna uma das várias expressões de resultado possíveis.
A expressão CASE tem dois formatos:
A expressão CASE simples compara uma expressão com um conjunto de expressões simples para determinar o resultado.
A expressão CASE pesquisada avalia um conjunto de expressões boolianas para determinar o resultado.
Ambos os formatos exigem um argumento ELSE.
CASE pode ser usada em qualquer instrução ou cláusula que permita uma expressão válida. Por exemplo, você pode usar CASE em expressões, como SELECT e nas cláusulas como WHERE e HAVING.
Syntax
Expressão CASE simples:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
ELSE else_result_expression
END
Expressão CASE pesquisada:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
ELSE else_result_expression
END
Argumentos
input_expression
É a expressão avaliada quando o formato CASE simples é usado. O valor avaliado é comparado com o when_expression.
WHEN when_expression
É a expressão à qual input_expression é comparado ao usar o formato CASE simples. Os tipos de when_expressions não precisam necessariamente corresponder.
QUANDO boolean_expression
É a expressão booliana avaliada ao usar o formato CASE pesquisado. Se essa expressão for avaliada como true, o result_expression correspondente será retornado.
THEN result_expression
É a expressão retornada quando input_expression é igual a when_expression (no formato CASE simples) ou quando boolean_expression é avaliada como true (no formato CASE pesquisado).
ELSE else_result_expression
É a expressão retornada se nenhuma das condições avaliadas como TRUE.
Tipo de retorno
É o tipo de precedência mais alto do conjunto de tipos em result_expression e else_result_expression.
Exemplos
Usando select com uma expressão CASE simples:
SELECT
CASE vehicleType
WHEN 'S' THEN 'Sedan'
WHEN 'T' THEN 'Truck'
WHEN 'V' THEN 'Van'
ELSE NULL
END as vehicleTypeName
FROM vehicles
Usando select com expressão CASE pesquisada:
SELECT
CASE
WHEN temperature < 60 THEN 'Alert'
ELSE 'OK'
END as currentStatus
FROM sensor