Istruzione CASE (MDX)
Consente di restituire valori specifici da più confronti in base a condizioni specifiche. Esistono due tipi di istruzioni CASE:
Un'istruzione CASE semplice che esegue un confronto tra un'espressione e un set di espressioni semplici per restituire valori specifici.
Un'istruzione CASE avanzata che valuta un set di espressioni booleane per restituire valori specifici.
Sintassi
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
Argomenti
input_expression
Espressione MDX (Multidimensional Expression) che viene risolta in valore scalare.when_expression
Valore scalare specificato in base a cui viene valutato input_expression, il quale, se valutato come true, restituisce il valore scalare di else_result_expression.when_true_result_expression
Valore scalare restituito quando la clausola WHEN restituisce true.else_result_expression
Valore scalare restituito quando nessuna delle clausole WHEN restituisce true.Boolean_expression
Espressione MDX che restituisce un valore scalare.
Osservazioni
Se non ci sono clausole ELSE e tutte le clausole WHEN restituiscono False, il risultato sarà una cella vuota.
Espressione CASE semplice
MDX valuta un'espressione CASE semplice risolvendo input_expression in un valore scalare, che viene quindi confrontato con il valore scalare di when_expression. Se i due valori scalari corrispondono, l'istruzione CASE restituisce il valore di when_true_expression. Se i due valori scalari non corrispondono, viene valutata la clausola WHEN successiva. Se tutte le clausole WHEN restituiscono false, viene restituito il valore else_result_expression dell'eventuale clausola ELSE.
Nell'esempio seguente, la misura Reseller Order Count viene valutata in base a diverse clausole WHEN e restituisce un risultato basato sul valore della misura Reseller Order Count per ogni anno. Per i valori di Reseller Order Count che non corrispondono a un valore scalare specificato in when_expression in una clausola WHEN, viene restituito il valore scalare di else_result_expression.
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
Espressione CASE avanzata
Per utilizzare l'espressione CASE per eseguire valutazioni più complesse, utilizzare l'espressione CASE avanzata. Questa variante dell'espressione di ricerca consente di valutare se un'espressione di input è compresa in un intervallo di valori. Nel linguaggio MDX le clausole WHEN vengono valutate nell'ordine in cui si presentano nell'istruzione CASE.
Nell'esempio seguente, la misura Reseller Order Count viene valutata in base all'espressione Boolean_expression specificata per ognuna di più clausole WHEN. Viene restituito un risultato basato sul valore della misura Reseller Order Count per ogni anno. Poiché le clausole WHEN sono valutate nell'ordine in cui vengono visualizzate, è possibile assegnare a tutti i valori superiori a 6 il valore "VERY LARGE" senza dover specificare ogni valore in modo esplicito. Per i valori di Reseller Order Count che non sono specificati in una clausola WHEN, viene restituito il valore scalare di else_result_expression.
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