Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Permite-te devolver valores específicos condicionalmente a partir de múltiplas comparações. Existem dois tipos de enunciados de caso:
Uma declaração de caso simples que compara uma expressão com um conjunto de expressões simples para devolver valores específicos.
Uma instrução de caso pesquisado que avalia um conjunto de expressões booleanas para devolver valores específicos.
Syntax
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
Arguments
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, devolve o valor escalar do else_result_expression.
when_true_result_expression
O valor escalar devolvido quando a cláusula WHEN é avaliada como verdadeira.
else_result_expression
O valor escalar é devolvido quando nenhuma das cláusulas WHEN avalia como verdadeira.
Boolean_expression
Uma expressão MDX que avalia para um valor escalar.
Observações
Se não houver cláusula ELSE, e todas as cláusulas WHEN avaliarem como falsas, o resultado é uma célula vazia.
Expressão simples do caso
O MDX avalia uma expressão de caso simples resolvendo a input_expression num valor escalar. Este valor escalar é então comparado com o valor escalar do when_expression. Se os dois valores escalares coincidirem, a instrução CASE devolve 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 existir, é devolvido.
No exemplo seguinte, a medida de Contagem de Ordens de Revendedor é avaliada em função de várias cláusulas QUANDO e devolve um resultado baseado no valor da medida de Contagem de Ordens de Revendedor para cada ano. Para valores de Contagem de Encomendas de Revendedor que não correspondem a um valor escalar especificado numa when_expression numa cláusula WHEN, o valor escalar da else_result_expression é devolvido.
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-se a expressão de caso pesquisado. Esta variação da expressão de pesquisa permite-lhe avaliar se uma expressão de entrada está dentro de um intervalo de valores. O MDX avalia as cláusulas WHEN pela ordem em que estas cláusulas aparecem na instrução CASE.
No exemplo seguinte, a medida de Contagem de Ordens de Revendedor é avaliada com base no Boolean_expression especificado para cada uma das várias cláusulas WHEN. Um resultado é devolvido com base no valor da medida de Contagem de Encomendas de Revendedor para cada ano. Como as orações WHEN são avaliadas pela ordem em que aparecem, todos os valores maiores que 6 podem facilmente ser atribuídos ao valor "MUITO GRANDE" sem necessidade de especificar explicitamente cada valor. Para valores de Contagem de Encomendas de Revendedor que não estejam especificados numa cláusula QUANDO, o valor escalar do else_result_expression é devolvido.
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