Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Permite que você retorne valores específicos condicionalmente de múltiplas comparações. Existem dois tipos de enunciados de caso:
Uma instrução caso simples que compara uma expressão com um conjunto de expressões simples para retornar valores específicos.
Uma instrução de caso pesquisada que avalia um conjunto de expressões booleanas 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 de Expressões Multidimensionais (MDX) que resolve para um valor escalar.
when_expression
Um valor escalar especificado contra o qual o input_expression é avaliado, que, quando avaliado como verdadeiro, retorna o valor escalar do else_result_expression.
when_true_result_expression
O valor escalar retornado quando a cláusula WHEN é avaliada como verdadeira.
else_result_expression
O valor escalar retorna quando nenhuma das cláusulas WHEN avalia como verdadeira.
Boolean_expression
Uma expressão MDX que avalia para um valor escalar.
Remarks
Se não houver cláusula ELSE, e todas as cláusulas WHEN avaliarem como falsas, o resultado é uma célula vazia.
Expressão de Caso Simples
O MDX avalia uma expressão de caso simples resolvendo o input_expression para um valor escalar. Esse valor escalar é então comparado ao valor escalar do when_expression. Se os dois valores escalares coincidirem, a instrução CASE retorna o valor do when_true_expression. Se os dois valores escalares não coincidirem, a próxima cláusula WHEN é avaliada. Se todas as cláusulas WHEN avaliarem como falsas, o valor de else_result_expression da cláusula ELSE, se houver, é retornado.
No exemplo a seguir, a medida de Contagem de Ordens de Revendedor é avaliada em relação a várias cláusulas WHEN e retorna um resultado baseado no valor da medida de Contagem de Ordens de Revendedor para cada ano. Para valores de contagem de ordens de revendedor que não correspondem a um valor escalar especificado em uma cláusula when_expression WHEN, o valor escalar da 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 de Caso Pesquisada
Para usar a expressão de caso para realizar avaliações mais complexas, utilize a expressão de caso pesquisado. Essa variação da expressão de busca permite avaliar se uma expressão de entrada está dentro de um intervalo de valores. O MDX avalia as cláusulas WHEN na ordem em que essas cláusulas aparecem na instrução CASE.
No exemplo a seguir, a medida de Contagem de Ordens de Revendedor é avaliada em relação à Boolean_expression especificada para cada uma das várias cláusulas WHEN. Um resultado é retornado com base no valor da medida de Contagem de Ordens de Revendedor para cada ano. Como as cláusulas WHEN são avaliadas na ordem em que aparecem, todos os valores maiores que 6 podem facilmente ser atribuídos ao valor "MUITO GRANDE" sem precisar especificar cada valor explicitamente. Para valores de contagem de ordens de revendedor que não estão especificados em uma cláusula WHEN, o valor escalar da 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