Столбцы, вычисляемые на основе условий
При вычислении столбцов можно получать разные результаты выражения в зависимости от того, выполнены ли определенные условия. Условия можно настроить в выражениях с помощью логических функций If() или Case().
If()
При использовании функции If() необходимо указать условие, которое может принимать значение True или False, а затем следует результат, возвращаемый в первом и во втором случае.
Примеры
Выражение
If(([Amount]<10),"low","high")
означает, что если значение строки в столбце «Количество» меньше 10, в качестве результата вернется значение «low», но если значение равно или больше 10, вернется значение «high».
Такой пример показан ниже:

Другими словами, функция If() делит строки на две группы. Одна группа состоит из строк, для которых указанное условие принимает значение True (возвращается результат «low»), а вторая — из строк, для которых указанное условие принимает значение False (возвращается результат «high»).
Если значения, которые нужно вернуть, являются агрегированными, эти две группы будут обрабатываться отдельно. Такой пример показан в таблице ниже с помощью добавленного выражения,
If(([Amount]<10),Avg([Amount]),Avg([Amount]))
которое содержит агрегирования типа «Среднее». В этом случае для двух групп указывается один тип агрегирования, но могут использоваться разные агрегации.

Для значений строк меньше 10, принадлежащих группе, которая принимает значение True, возвращается среднее значение 6 = ((5+7)/2), а для группы, которая принимает значение False, возвращается среднее значение 13 = ((14+10+15)/3).
Функцию if() можно также использовать в сочетании с операторами and и or. Чтобы привести пример — следующее выражение
If(([Customer age]<20) and ([Gender]="Female"),"girl","other")
формирует добавленный вычисляемый столбец:

Case()
Если нужно написать выражение, результаты условий которого не ограничивались бы значениями True или False, можно использовать функцию case(). Функцию Case() можно использовать в двух разных формах, которые описываются в примерах ниже.
Пример 1
Предположим, цены на книги и видео ниже были снижены на 10 % и 50 % соответственно, и список цен нужно обновить.

Так как снижение стоимости отличается в зависимости от типа продукта, выражение case() будет использоваться для расчета новых цен:
case [Type]
when "Book" then [Price]*0.9
when "Video" then [Price]*0.5
else [Price]
end

Здесь функция case() только проверяет тип (Type) для всех вариантов when в выражении.
Пример 2
Во втором примере функция case() используется для вычисления результатов тестов для определенного количества студентов. Предлагается три уровня оценки: Failed (неудовлетворительно — общий результат меньше 100), Passed (зачет) и Excellent (отлично — общий результат равен 160 и выше).

В этом примере с помощью функции Case() независимо вычисляется соответствие условию для всех вариантов when:
case
when ([Test A] + [Test B])<100 then "Failed"
when ([Test A] + [Test B])>=160 then "Excellent"
else "Passed"
end
В этом случае можно реализовать более сложные условия по сравнению с условиями в примере 1.
Итоговый вычисляемый столбец показан ниже:

case() в выражение можно включить несколько условий when/then.Последовательность выполнения условий
Различные компоненты выражений case() выполняются сверху вниз. Просмотрите выражение ниже и итоговый столбец:
case
when [Number]<40 then "yes"
when [Number]<70 then "no"
else "x"
end

Числа ниже 40 получают значение Yes (да), и оно не меняется. Следующая часть выражения, где для числа ниже 70 указывается значение No (нет), распространяется только на оставшиеся строки.