2016-07-29 5 views
0

MDX計算メジャーを使用して、列に対してcaseステートメントを実行しようとしています。MDX Caseステートメント

私はこのコードを使用しています:

Case [hist].[title] when "Mr" then "Test1 "Else "Test2"end 

私はそれを保存するとき、それは氏が、レコードのいくつかのタイトル欄にあるにもかかわらず、新しい列にTest2をにすべてを設定します。私が間違っている可能性のあるアイデア?

おかげ

MDXで

答えて

0

あなたが言うことができます。

IIF( 
[hist].[title].CURRENTMEMBER.MEMBER_CAPTION = "Mr" 
,"Test1" 
,"Test2" 
) 

または

CASE 
WHEN [hist].[title].CURRENTMEMBER.MEMBER_CAPTION = "Mr" 
    THEN "Test1" 
ELSE "Test2" 
END 

または

CASE 
WHEN [hist].[title].CURRENTMEMBER 
    IS [hist].[title].[title].&[Mr] 
    THEN "Test1" 
ELSE "Test2" 
END 

'IIF' はデフォルトとして使用することをお勧めします

IIF( 
[hist].[title].CURRENTMEMBER 
    IS [hist].[title].[title].&[Mr] 
,"Test1" 
,"Test2" 
) 

ノート

パフォーマンスの面で

: - ISオペレータは​​
使用に好適である - IIFを一般的に実行し、より良いよりCASE - あなたはの枝の一つと離れて得ることができる場合IIFNULLの場合、計算が高速ブロックモードで実行される可能性があります。

だから、これは最高のようになります。

IIF( 
[hist].[title].CURRENTMEMBER 
    IS [hist].[title].[title].&[Mr] 
,"Test1" 
,NULL 
) 
+0

おかげで私は、私はすべてのレコードがrory83 OK]を@テスト2 – rory83

+0

を示して同じ結果を得ることを試みる - 私のミス - あなたはどちらか 'MEMBER_CAPTION'プロパティを使用する必要があります私たちに 'IS'演算子を使い、演算子の右に" Mr "の正確なメンバーをドラッグしてください。私は完全名を推測します。 – whytheq

関連する問題