2016-04-15 24 views
3

列に表示されるMDXを記述する必要があり、行を3つのグループに分けています。最初のグループは少数の数字で区別され、2番目のグループは属性によるもので、3番目のグループは残りが収まりません。MDXの場合の複数のステートメント

私のコードは、これまでのようになります。

case 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "9378793737" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "3789789397" then "ABC" 
    when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" 
    else "Rest" 
end 

しかし、私は「休息」毎回取得しています。

どうすればよいですか?

編集: 別の試みが、まだ動作していない:

case 
    when [Customer].[Customer's Document].[&5196189651] then "ABC" 
    when [Customer].[Customer's Document].[&7885181585] then "ABC" 
    when [Customer].[Customer's Document].[&7511535861] then "ABC" 
    when [Customer].[Customer's Document].[&4742575277] then "ABC" 
    when [Customer].[Customer's Document].[&7272727272] then "ABC" 
    when [Customer's Document].[Document Series].[&CHP] then "XYZ" 
    else "Rest" 
end 
+0

お客様のドキュメントの値は、キーと名前のプロパティは何ですか。 Customerディメンションの構造は何ですか?この測定値をどのように照会し、最終結果として '残りの部分'を確認しますか?ご質問に質問を追加してください。 – BICube

+0

@Dodzik - 最終的なSELECT節の行にあるDimension '[Customer] 'ですか?それが行にない場合、Currentmemberは、次元が実際にはコンテキスト内の_current_すなわちの場合、すべてのメンバー.... currentmemberのみの機能です。これはたぶんあなたが休憩を取る理由です。あなたのmdxスクリプトの残りの部分を追加できますか? – whytheq

答えて

1

私はあなたが何かをしたい感覚を得る:

CASE 
    WHEN ACOLUMN BETWEEN 0 AND 10 THEN 'ABC' 
    WHEN ACOLUMN BETWEEN 10 AND 20 THEN 'ABC' 
    ELSE 'REST' 
END 

私はあなたが2部にコードを破ることができると同じhierarchy.Alternativeを使用しなければならない場合にと信じています

WITH 
    SET [ABC] AS 
    { 
     [Customer].[Customer's Document].&[5196189651] 
    ,[Customer].[Customer's Document].&[7885181585] 
    ,[Customer].[Customer's Document].&[7511535861] 
    ,[Customer].[Customer's Document].&[4742575277] 
    ,[Customer].[Customer's Document].&[7272727272] 
    } 
    MEMBER [Customer].[All].[ABC] AS 
    Aggregate([ABC]) 
    MEMBER [Customer].[All].[XYZ] AS 
    [Customer].[Customer's Document].[Document Series].&[CHP] 
    SET [REST] AS 
    Except 
    (
     [Customer].[Customer's Document].MEMBERS 
    ,[ABC] 
    ) 
    MEMBER [Customer].[All].[Rest] AS 
    Aggregate([REST]) 
    SET [FINAL] AS 
    { 
     [Customer].[All].[ABC] 
    ,[Customer].[All].[XYZ] 
    ,[Customer].[All].[Rest] 
    } 
SELECT 
    [FINAL] ON 1 
,{[Measures].[Amount]} ON 0 
FROM [YourCube]; 

または多分以下:

より次のように

編集

単なる警告 - 受け入れ答えに次のmdxがあります:

case 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" 
... 
... 

これは解決策としてマークされる可能性がありますが、それはmdx素晴らしいではありません。この状況ではISオペレータが使用する必要があります。

case 
    when [Customer].[Customer's Document].CURRENTMEMBER IS 
      [Customer].[Customer's Document].[Customer's Document].&[4254255527] then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER IS 
      [Customer].[Customer's Document].[Customer's Document].&[2752637520] then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER IS 
      [Customer].[Customer's Document].[Customer's Document].&[5637839739] then "ABC" 
... 
... 
+0

[&] [顧客]の外にあることを意味しましたか?[顧客のドキュメント]&[7272727272] – BICube

+0

@Ala元の質問のメンバー名をコピーしましたが、通常は中括弧の外側にある。 – whytheq

+0

@Dodzik - Proffesoreの答えの一般的なmdxがあまりよくないので、これが間違ってマークされていると感じました。この 't 'を実行すると、.CURRENTMEMBER.MEMBERVALUE =" 4254255527 "'は 'IS'演算子 – whytheq

0

あなたはどのBIツールを使用しています。これをデータソースビューの名前計算として新しい列に追加することができます(顧客テーブル - >新しい名前付き計算 - >列名:XXXを右クリックします)。 例:

case 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "9378793737" then "ABC" 
    when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "3789789397" then "ABC" 
    when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" 
    else "Rest" 
end 

CASE 
when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" 
    else "Rest" 
end 
関連する問題