CASE ステートメント (MDX)
更新 : 2006 年 12 月 12 日
複数の比較から、条件付きで特定の値を返します。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 else_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_expression の値が返されます。2 つのスカラ値が一致しなかった場合は、次の WHEN 句が評価されます。すべての WHEN 句が false と評価された場合、ELSE 句があればその値が返されます。
次の例では、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
参照
その他の技術情報
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 7 月 17 日 |
|
2006 年 12 月 12 日 |
|