CASE ステートメント (MDX)
複数の比較から、条件付きで特定の値を返します。case ステートメントには、次の 2 種類があります。
単純 case ステートメントは、1 つの式を一連の単純式と比較して、特定の値を返します。
検索 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 による単純 case 式の評価では、input_expression がスカラー値に解決されます。次に、このスカラー値が when_expression のスカラー値と比較されます。2 つのスカラー値が一致した場合は、CASE ステートメントから when_true_expression の値が返されます。2 つのスカラー値が一致しなかった場合は、次の WHEN 句が評価されます。すべての WHEN 句が false と評価された場合、ELSE 句があれば else_result_expression の値が返されます。
次の例では、Reseller Order Count メジャーを複数の WHEN 句に対して評価し、年ごとに Reseller Order Count メジャーの値に基づいて結果を返しています。Reseller Order Count 値が、WHEN 句の when_expression で指定されているスカラー値と一致しない場合は、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 式
case 式でもっと複雑な評価を実行するには、検索 case 式を使用します。検索式の 1 つである検索 case 式を使用すると、入力式が一定範囲内の値であるかどうかを評価できます。MDX は、WHEN 句を CASE ステートメント内に出現する順序で評価します。
次の例では、複数の WHEN 句にそれぞれ指定された Boolean_expression に対して Reseller Order Count メジャーを評価しています。年ごとの 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