Compartir a través de


Instrucción CASE (MDX)

Permite establecer la devolución condicional de 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 de búsqueda 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 con el que se evalúa la input_expression, que cuando se evalúa como true, devuelve el valor escalar de 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.

Notas

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 CASE simple al resolver la input_expression en un valor escalar. A continuación, este valor escalar se compara con el valor escalar de la when_expression. Si los dos valores escalares coinciden, la instrucción CASE devuelve el valor de la when_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 la hubiera.

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

Vea también

Otros recursos