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