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