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 avaliado em input_expression que, quando avaliado como true, retorna o valor escalar de 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 CASE simples resolvendo input_expression em um valor escalar. Este valor escalar é comparado com o valor escalar de when_expression. Se os dois valores escalares coincidirem, a instrução CASE retornará o valor de 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 os valores de Contagem dos Pedidos do Revendedor que não coincidem com o valor escalar especificado em when_expression em uma cláusula WHEN, o valor escalar de 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 dos Pedidos do Revendedor é avaliada em relação à Boolean_expression especificada 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 os valores de Contagem dos Pedidos do Revendedor não especificados em uma cláusula WHEN, o valor escalar de 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

Outros recursos