2016-07-25 12 views
0

私は、現在のメンバーごとにmdxクエリを使用して前の(上の)メンバーのSalesを取得する必要があります。mdxの上のメンバー値を順序付けした選択で得る

以下のmdxは、通常のクエリで以前のメンバ値を取得するのに問題ありませんが、Salesによって行を並べ替えるように設定した場合、前の値は混在し、順序付けられたメンバーには適用されません。

WITH 
    MEMBER [Measures].[PrevMemberSales] AS 
     'SUM(
     [Markets].[Country].CurrentMember.PREVMEMBER 
     , [Measures].[Sales] 
     )' 
SELECT 
    NON EMPTY 
     ({[Measures].[Sales], [Measures].[PrevMemberSales]}) ON COLUMNS, 
    NON EMPTY 
     //ORDER(
      {[Markets].[Country].Members} 
     // , [Measures].[Sales], BDESC) 
     ON ROWS 
FROM [SteelWheelsSales]; 

Salesの違いを得るには、前のメンバの値を上に戻す必要があります。

WITH 
    MEMBER [Measures].[PrevMemberSales] AS 
     (Order(
      [Markets].[Country].Members 
     ,[Measures].[Sales] 
     ,BDESC 
     ).Item(
       Rank(
        [Markets].[Country].CurrentMember 
        ,Order(
         [Markets].[Country].Members 
        ,[Measures].[Sales] 
        ,BDESC 
        ) 
       ) - 2 
       ).Item(0) 
     , [Measures].[Sales] 
     ) 
SELECT 
    NON EMPTY ({[Measures].[Sales], [Measures].[PrevMemberSales]}) ON COLUMNS, 
    NON EMPTY 
     ORDER(
      {[Markets].[Country].Members} 
      , [Measures].[Sales], BDESC) 
     ON ROWS 
FROM 
    [SteelWheelsSales] 

結果はOKですが、私の次の質問は、計算メンバーを作ることです:私はちょうど計算メンバーのために、以下の式を用いて問題を解決するために管理3. enter image description here

答えて

0

モンドリアン私が使用しています それは上記のすべてのメンバーのためにすべての売上の合計をもたらします。 たとえば、フランスのセールスの場合、値は米国+スペインのセールス、オーストラリアのセールスはアメリカ+スペイン+フランスのセールスが必要です。

関連する問題