Compartir por


Instrucción CASE (MDX)

Permite obtener condicionalmente valores específicos de varias comparaciones. Hay dos tipos de instrucciones CASE:

  • Una instrucción CASE simple que compara una expresión con un conjunto de expresiones simples para devolver valores específicos.

  • Una instrucción CASE buscada que evalúa un conjunto de expresiones booleanas para devolver valores específicos.

Sintaxis

  
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  

Argumentos

input_expression
Expresión MDX (Expresiones multidimensionales) que se resuelve en un valor escalar.

when_expression
Valor escalar especificado en el que se evalúa el input_expression , que, cuando se evalúa como true, devuelve el valor escalar del else_result_expression.

when_true_result_expression
Valor escalar devuelto cuando la cláusula WHEN se evalúa como true.

else_result_expression
Valor escalar devuelto cuando ninguna de las cláusulas WHEN se evalúa como true.

Boolean_expression
Expresión MDX que se evalúa como un valor escalar.

Comentarios

Si no existe ninguna cláusula ELSE y todas las cláusulas WHEN son falsas, el resultado será una celda vacía.

Expresión CASE sencilla

MDX evalúa una expresión de caso simple resolviendo el input_expression en un valor escalar. A continuación, este valor escalar se compara con el valor escalar del when_expression. Si los dos valores escalares coinciden, la instrucción CASE devuelve el valor del when_true_expression. Si los dos valores escalares no coinciden, se evalúa la siguiente cláusula WHEN. Si todas las cláusulas WHEN se evalúan como false, se devuelve el valor de else_result_expression de la cláusula ELSE, si existe.

En el ejemplo siguiente, la medida Reseller Order Count se evalúa con varias cláusulas WHEN y devuelve un resultado basado en el valor de la medida Reseller Order Count de cada año. Para los valores de Reseller Order Count que no coinciden con un valor escalar especificado en un when_expression en una cláusula WHEN, se devuelve el valor escalar del 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  

Expresión CASE buscada

Para utilizar la expresión CASE a fin de realizar evaluaciones más complejas, utilice la expresión CASE buscada. Esta variación de la expresión de búsqueda permite evaluar si una expresión de entrada se encuentra dentro de un intervalo de valores. MDX evalúa las cláusulas WHEN en el orden en que éstas aparecen en la instrucción CASE.

En el ejemplo siguiente, la medida Reseller Order Count se evalúa con respecto al Boolean_expression especificado para cada una de varias cláusulas WHEN. Se devuelve un resultado basado en el valor de la medida Reseller Order Count de cada año. Debido a que las cláusulas WHEN se evalúan en el orden en que aparecen, a todos los valores mayores que 6 se les puede asignar fácilmente el valor "VERY LARGE" sin tener que especificar cada valor explícitamente. Para los valores reseller Order Count que no se especifican en una cláusula WHEN, se devuelve el valor escalar del 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  

Consulte también

Instrucciones para scripting de MDX (MDX)