Istruzione CASE (MDX)CASE Statement (MDX)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Consente di restituire valori specifici da più confronti in base a condizioni specifiche.Lets you conditionally return specific values from multiple comparisons. Esistono due tipi di istruzioni CASE:There are two types of case statements:

  • Un'istruzione CASE semplice che esegue un confronto tra un'espressione e un set di espressioni semplici per restituire valori specifici.A simple case statement that compares an expression to a set of simple expressions to return specific values.

  • Un'istruzione CASE avanzata che valuta un set di espressioni booleane per restituire valori specifici.A searched case statement that evaluates a set of Boolean expressions to return specific values.

SintassiSyntax


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  

ArgomentiArguments

input_expressioninput_expression
Espressione MDX (Multidimensional Expression) che viene risolta in valore scalare.A Multidimensional Expressions (MDX) expression that resolves to a scalar value.

when_expressionwhen_expression
Valore scalare rispetto al quale specificato il input_expression viene valutata, che, quando valutata come true, restituisce il valore scalare del else_result_expression.A specified scalar value against which the input_expression is evaluated, which when evaluated to true, returns the scalar value of the else_result_expression.

when_true_result_expressionwhen_true_result_expression
Valore scalare restituito quando la clausola WHEN restituisce true.The scalar value returned when the WHEN clause evaluates to true.

else_result_expressionelse_result_expression
Valore scalare restituito quando nessuna delle clausole WHEN restituisce true.The scalar value returned when none of the WHEN clauses evaluate to true.

Espressione Boolean_expressionBoolean_expression
Espressione MDX che restituisce un valore scalare.An MDX expression that evaluates to a scalar value.

OsservazioniRemarks

Se non ci sono clausole ELSE e tutte le clausole WHEN restituiscono False, il risultato sarà una cella vuota.If there is no ELSE clause, and all WHEN clauses evaluate to false, the result is an empty cell.

Espressione CASE sempliceSimple Case Expression

MDX valuta un'espressione case semplice risolvendo il input_expression su un valore scalare.MDX evaluates a simple case expression by resolving the input_expression to a scalar value. Questo valore scalare viene quindi confrontato con il valore scalare del when_expression.This scalar value is then compared to the scalar value of the when_expression. Se i due valori scalari corrispondono, l'istruzione CASE restituisce il valore della when_true_expression.If the two scalar values match, the CASE statement returns the value of the when_true_expression. Se i due valori scalari non corrispondono, viene valutata la clausola WHEN successiva.If the two scalar values do not match, the next WHEN clause is evaluated. Se tutte le clausole WHEN restituiscono false, il valore di else_result_expression dalla clausola ELSE, se presente, viene restituito.If all of the WHEN clauses evaluate to false, the value of else_result_expression from the ELSE clause, if any, is returned.

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.In the following example, the Reseller Order Count measure is evaluated against several WHEN clauses and returns a result based on the value of the Reseller Order Count measure for each year. Per i valori di Reseller Order Count che non corrispondono a un valore scalare specificato in un when_expression in una clausola WHEN, il valore scalare del else_result_expression viene restituito.For Reseller Order Count values that do not match a scalar value specified in a when_expression in a WHEN clause, the scalar value of the else_result_expression is returned.

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 avanzataSearched Case Expression

Per utilizzare l'espressione CASE per eseguire valutazioni più complesse, utilizzare l'espressione CASE avanzata.To use the case expression to perform more complex evaluations, use the searched case expression. Questa variante dell'espressione di ricerca consente di valutare se un'espressione di input è compresa in un intervallo di valori.This variation of the search expression allows you to evaluate whether an input expression is within a range of values. Nel linguaggio MDX le clausole WHEN vengono valutate nell'ordine in cui si presentano nell'istruzione CASE.MDX evaluates the WHEN clauses in the order that these clauses appear in the CASE statement.

Nell'esempio seguente, la misura Reseller Order Count viene valutata rispetto al messaggio specificato argomento Boolean_expression per ognuna di più clausole WHEN.In the following example, the Reseller Order Count measure is evaluated against the specified Boolean_expression for each of several WHEN clauses. Viene restituito un risultato basato sul valore della misura Reseller Order Count per ogni anno.A result is returned based on the value of the Reseller Order Count measure for each year. 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.Because WHEN clauses are evaluated in the order they appear, all values larger than 6 can easily be assigned the value of "VERY LARGE" without having to specify each value explicitly. Per i valori di Reseller Order Count che non sono specificati in una clausola WHEN, il valore scalare del else_result_expression viene restituito.For Reseller Order Count values that are not specified in a WHEN clause, the scalar value of the else_result_expression is returned.

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  

Vedere ancheSee Also

Istruzioni di Scripting MDX ( MDX )MDX Scripting Statements (MDX)