Compartilhar via


Instrução CASE (MDX)

Permite retornar de modo condicional valores específicos de várias comparações. Há dois tipos de instruções CASE:

  • Uma instrução CASE simples que compara uma expressão com um conjunto de expressões simples para retornar valores específicos.

  • Uma instrução CASE pesquisada que avalia um conjunto de expressões boolianas para retornar valores específicos.

Sintaxe

  
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
Uma expressão MDX (Multidimensional Expressions) resolvida em um valor escalar.

When_expression
Um valor escalar especificado em relação ao qual o input_expression é avaliado, que, quando avaliado como true, retorna o valor escalar do else_result_expression.

when_true_result_expression
O valor escalar retornado quando a cláusula WHEN é avaliada como true.

Else_result_expression
O valor escalar retornado quando nenhuma cláusula WHEN é avaliada como true.

Boolean_expression
Uma expressão MDX avaliada como um valor escalar.

Comentários

Se não houver nenhuma cláusula ELSE e todas as cláusulas WHEN forem avaliadas como false, o resultado será uma célula vazia.

Expressão CASE simples

O MDX avalia uma expressão de maiúsculas e minúsculas simples resolvendo a input_expression para um valor escalar. Esse valor escalar é comparado com o valor escalar do when_expression. Se os dois valores escalares corresponderem, a instrução CASE retornará o valor do when_true_expression. Se os dois valores escalares não coincidirem, a próxima cláusula WHEN será avaliada. Se todas as cláusulas WHEN forem avaliadas como false, o valor de else_result_expression da cláusula ELSE, se houver, será retornado.

No exemplo a seguir, a medida Contagem dos Pedidos do Revendedor é avaliada em várias cláusulas WHEN e retorna um resultado com base no valor da medida Contagem dos Pedidos do Revendedor de cada ano. Para valores de Contagem de Pedidos do Revendedor que não correspondem a um valor escalar especificado em um when_expression em uma cláusula WHEN, o valor escalar do else_result_expression é retornado.

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  

Expressão CASE pesquisada

Para usar a expressão CASE para executar avaliações mais complexas, use a expressão CASE pesquisada. Essa variação da expressão de pesquisa permite que você avalie se uma expressão de entrada está dentro de um intervalo de valores. O MDX avalia as cláusulas WHEN para que essas cláusulas apareçam na instrução CASE.

No exemplo a seguir, a medida Contagem de Pedidos do Revendedor é avaliada em relação ao Boolean_expression especificado para cada uma das várias cláusulas WHEN. O resultado é retornado com base no valor da medida Contagem dos Pedidos do Revendedor de cada ano. Como as cláusulas WHEN são avaliadas na ordem em que aparecem, todos os valores superiores a 6 podem receber facilmente o valor “VERY LARGE”, sem ser necessário especificar cada valor explicitamente. Para valores de Contagem de Pedidos do Revendedor que não são especificados em uma cláusula WHEN, o valor escalar do else_result_expression é retornado.

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 Também

Instruções de script MDX (MDX)