Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Позволяет условно возвращать конкретные значения из нескольких сравнений. Существует два типа кейс-утверждений:
Простой падежный оператор, который сравнивает выражение с набором простых выражений для возврата определённых значений.
Поискованное падежное утверждение, которое оценивает набор булевых выражений для возврата определённых значений.
Syntax
Simple Case Statement
CASE [input_expression]
WHEN when_expression THEN when_true_result_expression
[...n]
[ELSE else_result_expression]
END
Search Case Statement
CASE
WHEN Boolean_expression THEN when_true_result_expression
[...n]
[ELSE else_result_expression]
END
Arguments
input_expression
Многомерное выражение (MDX), которое разрешается в скалярное значение.
when_expression
Заданное скалярное значение, по которому оценивается input_expression , которое при вычислении в истину возвращает скалярное значение else_result_expression.
when_true_result_expression
Скалярное значение возвращается, когда клауза WHEN вычисляется в true.
else_result_expression
Скалярное значение возвращается, когда ни одна из клауз WHEN не вычисляется в true.
Boolean_expression
Выражение MDX, которое оценивается до скалярного значения.
Remarks
Если нет клаузы ELSE, и все клаузы WHEN вычисляются в false, результат — пустая ячейка.
Простое выражение падежа
MDX оценивает простое выражение случая, разрешив input_expression в скалярное значение. Это скалярное значение затем сравнивается со скалярным значением when_expression. Если два скалярных значения совпадают, оператор CASE возвращает значение when_true_expression. Если два скалярных значения не совпадают, вычисляется следующая клауза WHEN. Если все клаузы WHEN имеют значение false, возвращается значение else_result_expression из клаузы ELSE, если оно есть.
В следующем примере показатель количества заказов у реселлера оценивается по нескольким пунктам КОГДА и даёт результат, основанный на стоимости показателя количества заказов реселлера за каждый год. Для значений Reseller Order Count, которые не совпадают со скалярным значением, указанным в when_expression в клаузе WHEN, возвращается скалярное значение else_result_expression .
WITH MEMBER [Measures].x AS
CASE [Measures].[Reseller Order Count]
WHEN 0 THEN 'NONE'
WHEN 1 THEN 'SMALL'
WHEN 2 THEN 'SMALL'
WHEN 3 THEN 'MEDIUM'
WHEN 4 THEN 'MEDIUM'
WHEN 5 THEN 'LARGE'
WHEN 6 THEN 'LARGE'
ELSE 'VERY LARGE'
END
SELECT Calendar.[Calendar Year] on 0
, NON EMPTY [Geography].[Postal Code].Members ON 1
FROM [Adventure Works]
WHERE [Measures].x
Выражение поискового падежа
Чтобы использовать выражение падежа для выполнения более сложных оценок, используйте поисковое выражение падежа. Эта вариация поискового выражения позволяет оценить, находится ли входное выражение в диапазоне значений. MDX оценивает клаузы WHEN в порядке их появления в операторе CASE.
В следующем примере показатель количества заказов реселлера оценивается по указанному Boolean_expression для каждого из нескольких условий WHEN. Результат возвращается на основе стоимости показателя количества заказов у реселлеров за каждый год. Поскольку клаузы WHEN вычисляются в порядке их появления, всем значениям больше 6 можно легко присвоить значение «ОЧЕНЬ БОЛЬШОЙ» без необходимости явно указывать каждое значение. Для значений количества заказов у реселлеров, не указанных в клаузе WHEN, возвращается скалярное значение else_result_expression .
WITH MEMBER [Measures].x AS
CASE
WHEN [Measures].[Reseller Order Count] > 6 THEN 'VERY LARGE'
WHEN [Measures].[Reseller Order Count] > 4 THEN 'LARGE'
WHEN [Measures].[Reseller Order Count] > 2 THEN 'MEDIUM'
WHEN [Measures].[Reseller Order Count] > 0 THEN 'SMALL'
ELSE "NONE"
END
SELECT Calendar.[Calendar Year] on 0,
NON EMPTY [Geography].[Postal Code].Members on 1
FROM [Adventure Works]
WHERE [Measures].x