CASE ステートメント (MDX)

複数の比較から、条件付きで特定の値を返します。 case ステートメントには、次の 2 種類があります。

  • 式を一連の単純な式と比較して特定の値を返す単純な case ステートメント。

  • 特定の値を返すように一連のブール式を評価する検索された case ステートメント。

構文

  
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  

引数

input_expression
スカラー値に解決される多次元式 (MDX) 式。

when_expression
input_expressionが評価される指定されたスカラー値 。true に評価されると、else_result_expressionのスカラー値が返されます。

when_true_result_expression
WHEN 句が true と評価されたときに返されるスカラー値。

else_result_expression
WHEN 句のいずれも true と評価されない場合に返されるスカラー値。

Boolean_expression
スカラー値に評価される MDX 式。

解説

ELSE 句がなく、すべての WHEN 句が false と評価される場合、結果は空のセルになります。

単純な Case 式

MDX では、 input_expression をスカラー値に解決することで、単純なケース式を評価します。 このスカラー値は、 when_expressionのスカラー値と比較されます。 2 つのスカラー値が一致する場合、CASE ステートメントは when_true_expressionの値を返します。 2 つのスカラー値が一致しなかった場合は、次の WHEN 句が評価されます。 すべての WHEN 句が false と評価された場合は、ELSE 句から else_result_expression の値 (存在する場合) が返されます。

次の例では、Reseller Order Count メジャーが複数の WHEN 句に対して評価され、各年の Reseller Order Count メジャーの値に基づいて結果が返されます。 WHEN 句の when_expression で指定されたスカラー値と一致しない Reseller Order Count 値の 場合、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  

検索 case 式

ケース式を使用してより複雑な評価を実行するには、検索されたケース式を使用します。 検索式の 1 つである検索 case 式を使用すると、入力式が一定範囲内の値であるかどうかを評価できます。 MDX は、CASE ステートメントでこれらの句が出現する順序で WHEN 句を評価します。

次の例では、Reseller Order Count メジャーは、複数の WHEN 句ごとに指定された Boolean_expression に対して評価されます。 年ごとの Reseller Order Count メジャーの値に基づいて、結果が返されます。 WHEN 句は表示される順序で評価されるため、6 より大きい値はすべて、各値を明示的に指定しなくても"VERY LARGE" の値を簡単に割り当てることができます。 WHEN 句で指定されていない Reseller Order Count 値の場合、 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  

参照

MDX スクリプト ステートメント (MDX)