次の方法で共有


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

参照

その他の技術情報

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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

変更内容 :
  • わかりやすくするために構文および引数を更新しました。
  • 更新した例を追加しました。

2006 年 12 月 12 日

変更内容 :
  • わかりやすくするために構文および引数を更新しました。