ОСНОВНОЕ ИЗЛОЖЕНИЕ (MDX)

Позволяет условно возвращать конкретные значения из нескольких сравнений. Существует два типа кейс-утверждений:

  • Простой падежный оператор, который сравнивает выражение с набором простых выражений для возврата определённых значений.

  • Поискованное падежное утверждение, которое оценивает набор булевых выражений для возврата определённых значений.

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