CASE-Aussage (MDX)

Ermöglicht es, bedingt bestimmte Werte aus mehreren Vergleichen zurückzugeben. Es gibt zwei Arten von Fallaussagen:

  • Eine einfache Kasusausweisung, die einen Ausdruck mit einer Menge einfacher Ausdrücke vergleicht, um spezifische Werte zurückzugeben.

  • Eine gesuchte Fallausweisung, die eine Menge Boolescher Ausdrücke auswertet, um spezifische Werte zurückzugeben.

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  

Argumente

input_expression
Ein Multidimensional Expressions (MDX)-Ausdruck, der sich auf einen skalaren Wert auflöst.

when_expression
Ein spezifizierter skalarer Wert, gegen den der input_expression ausgewertet wird, der bei True den skalaren Wert des else_result_expression zurückgibt.

when_true_result_expression
Der skalare Wert wird zurückgegeben, wenn die WENN-Klausel auf true auswertet.

else_result_expression
Der skalare Wert wurde zurückgegeben, wenn keine der WENN-Klauseln auf true auswertet.

Boolean_expression
Ein MDX-Ausdruck, der zu einem skalaren Wert auswertet.

Bemerkungen

Wenn es keine ELSE-Klausel gibt und alle WENN-Klauseln als falsch auswerten, ist das Ergebnis eine leere Zelle.

Einfacher Kasusausdruck

MDX bewertet einen einfachen Fallausdruck, indem er die input_expression auf einen skalaren Wert auflöst. Dieser skalare Wert wird dann mit dem skalaren Wert des when_expression verglichen. Wenn die beiden skalaren Werte übereinstimmen, gibt die CASE-Anweisung den Wert der when_true_expression zurück. Wenn die beiden Skalarwerte nicht übereinstimmen, wird die nächste WENN-Klausel ausgewertet. Wenn alle WENN-Klauseln auf false auswerten, wird der Wert von else_result_expression aus der ELSE-Klausel, falls vorhanden, zurückgegeben.

Im folgenden Beispiel wird das Maß Reseller Order Count mit mehreren WANN-Klauseln ausgewertet und liefert ein Ergebnis basierend auf dem Wert der Reseller Order Count-Messung für jedes Jahr. Für Reseller Order Count-Werte, die nicht mit einem in einer when_expression in einer WENN-Klausel angegebenen skalaren Wert übereinstimmen, wird der skalare Wert des else_result_expression zurückgegeben.

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  

Gesuchter Kasus-Ausdruck

Um den Fallausdruck für komplexere Evaluationen zu verwenden, verwenden Sie den gesuchten Fallausdruck. Diese Variation des Suchausdrucks ermöglicht es Ihnen zu bewerten, ob ein Eingabeausdruck innerhalb eines Wertebereichs liegt. MDX bewertet die WENN-Klauseln in der Reihenfolge, in der diese Klauseln in der CASE-Anweisung erscheinen.

Im folgenden Beispiel wird das Maß Reseller Order Count anhand der angegebenen Boolean_expression für jede der mehreren WENN-Klauseln ausgewertet. Ein Ergebnis wird basierend auf dem Wert der Reseller Order Count-Messung für jedes Jahr zurückgegeben. Da WENN-Klauseln in der Reihenfolge ausgewertet werden, in der sie erscheinen, können alle Werte größer als 6 problemlos mit dem Wert "SEHR GROẞ" versehen werden, ohne jeden Wert explizit angeben zu müssen. Für Reseller Order Count-Werte, die in einer WENN-Klausel nicht angegeben sind, wird der skalare Wert der else_result_expression zurückgegeben.

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