Freigeben über


CASE-Anweisung (MDX)

Ermöglicht das bedingte Zurückgeben bestimmter Werte aus mehreren Vergleichen. Die folgenden zwei Arten von CASE-Anweisungen stehen zur Verfügung:

  • Einfache CASE-Anweisungen, die einen Ausdruck mit mehreren einfachen Ausdrücken vergleichen, um bestimmte Werte zurückzugeben.

  • Komplexe CASE-Anweisungen, die eine Menge boolescher Ausdrücke auswerten, um bestimmte 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 MDX-Ausdruck (Multidimensional Expressions), dessen Auflösung einen Skalarwert ergibt.

  • when_expression
    Ein angegebener Skalarwert, für den input_expression ausgewertet wird. Wenn die Auswertung den Wert true ergibt, wird der Skalarwert von else_result_expression zurückgegeben.

  • when_true_result_expression
    Der Skalarwert, der zurückgegeben wird, wenn die Auswertung der WHEN-Klausel den Wert true ergibt.

  • else_result_expression
    Der Skalarwert, der zurückgegeben wird, wenn keine Auswertung von WHEN-Klauseln den Wert true ergibt.

  • Boolean_expression
    Ein MDX-Ausdruck, dessen Auswertung einen Skalarwert ergibt.

Hinweise

Ist keine ELSE-Klausel angegeben, und werden alle WHEN-Klauseln zu FALSE ausgewertet, ist das Ergebnis eine leere Zelle.

Einfache CASE-Ausdrücke

MDX wertet einen einfachen CASE-Ausdruck durch Auflösen von input_expression in einen Skalarwert aus. Dieser Skalarwert wird dann mit dem Skalarwert von when_expression verglichen. Wenn die beiden Skalarwerte übereinstimmen, gibt der CASE-Ausdruck den Wert von when_true_expression zurück. Wenn die beiden Skalarwerte nicht übereinstimmen, wird die nächste WHEN-Klausel ausgewertet. Wenn die Auswertung aller WHEN-Klauseln den Wert false ergibt, wird der Wert von else_result_expression aus der ELSE-Klausel, wenn vorhanden, zurückgegeben.

Im folgenden Beispiel wird das Reseller Order Count-Measure für mehrere WHEN-Klauseln ausgewertet und als Ergebnis der Wert des Reseller Order Count-Measures für jedes Jahr zurückgegeben. Für Reseller Order Count-Werte, die nicht dem Skalarwert entsprechen, der als when_expression in der WHEN-Klausel angegeben ist, wird der Skalarwert von 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

Komplexe CASE-Ausdrücke

Verwenden Sie komplexe CASE-Ausdrücke, wenn Sie komplexere Auswertungen mithilfe von CASE-Ausdrücken durchführen möchten. Mit dieser Variante des Suchausdrucks können Sie auswerten, ob ein Eingabeausdruck innerhalb eines bestimmten Wertebereichs liegt. MDX wertet die WHEN-Klauseln in der Reihenfolge aus, in der die Klauseln in der CASE-Anweisung vorliegen.

Im folgenden Beispiel wird das Reseller Order Count-Measure für das angegebene Boolean_expression-Argument für eine Reihe von WHEN-Klauseln ausgewertet. Als Ergebnis wird der Wert des Reseller Order Count-Measures für jedes Jahr zurückgegeben. Da WHEN-Klausel in der Reihenfolge ausgewertet werden, in der sie vorliegen, können alle Werte, die größer als 6 sind, problemlos dem Wert "VERY LARGE" zugewiesen werden, ohne jeden einzelnen Wert explizit angeben zu müssen. Für Reseller Order Count-Werte, die nicht in einer WHEN-Klausel angegeben sind, wird der Skalarwert von 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

Siehe auch

Andere Ressourcen