CASE (Azure Stream Analytics)
Оценка списка условий и возвращение одного из нескольких возможных выражений результатов.
Выражение CASE имеет два формата:
простое выражение CASE для определения результата сравнивает выражение с набором простых выражений;
поисковое выражение CASE для определения результата вычисляет набор логических выражений.
Для обоих форматов требуется аргумент ELSE.
Выражение CASE может использоваться в любой инструкции или предложении, которые допускают допустимые выражения. Например, можно использовать CASE в выражениях, таких как SELECT, и предложениях, таких как WHERE и HAVING.
Синтаксис
Простое выражение CASE:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
ELSE else_result_expression
END
Поисковое выражение CASE:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
ELSE else_result_expression
END
Аргументы
input_expression
Выражение, полученное при использовании простого формата функции CASE. Вычисленное значение сравнивается с when_expression.
WHEN when_expression
Выражение, с которым сравнивается input_expression при использовании простого формата CASE. Типы when_expressions не обязательно должны совпадать.
КОГДА boolean_expression
Логическое выражение вычисляется при использовании искомого формата CASE. Если это выражение имеет значение true, возвращается соответствующее result_expression .
THEN result_expression
Выражение возвращается, когда input_expression равно when_expression (в простом формате CASE) или если boolean_expression принимает значение true (в искомом формате CASE).
ELSE else_result_expression
Возвращается выражение, если ни одно из условий не имеет значения TRUE.
Возвращаемый тип
Тип с наивысшим приоритетом из набора типов в result_expression и else_result_expression.
Примеры
Использование функции select с простым выражением CASE:
SELECT
CASE vehicleType
WHEN 'S' THEN 'Sedan'
WHEN 'T' THEN 'Truck'
WHEN 'V' THEN 'Van'
ELSE NULL
END as vehicleTypeName
FROM vehicles
Использование команды select с искомыми выражениями CASE:
SELECT
CASE
WHEN temperature < 60 THEN 'Alert'
ELSE 'OK'
END as currentStatus
FROM sensor