2013-09-01 57 views
1

我有一個我想要聚合的元組集合。如何在使用MDX設置的交叉連接上進行聚合

例如: 我有這個疑問:

Select {[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0, 
{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children} on 1 
From [Adventure Works] 

當我想添加一個TOTAL爲我做這個軸的一個:

WITH MEMBER [Sales Territory].[Sales Territory].[Total X] as 'AGGREGATE(AXIS(0))' 
Select {[Sales Territory].[Sales Territory].[Total X],[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0 
,{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children} on 1 From [Adventure Works] 

現在,現在是都好。 但是,當我試圖聚合交叉連接設置失敗。 請把這查詢爲例:。

Select {[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0 
,{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children}*{[Sales Channel].[Sales Channel].DEFAULTMEMBER.children} on 1 
From [Adventure Works] 

請注意,我做了一個交叉[銷售原因]之間加入[銷售原因類型] [銷售渠道] [銷售渠道]

當有多個成員時,有沒有辦法在軸上進行總計?

謝謝!

P.S:我與MDX一個新手查詢

+0

是您的默認成員設置爲全方位爲您尺寸是多少?如果是這樣,你可以嘗試1而不是你當前的交叉連接? 「{[Sales Reason]。[銷售原因類型] .members * [銷售渠道]。[銷售渠道] .members} on 1」當您執行.members這樣的成員時,它將包含全部成員。 – mmarie

回答

0

你正在做的事情比必要的更加複雜。你的第二個查詢應該可以簡化爲:

Select [Sales Territory].[Sales Territory].Members on 0, 
     [Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children on 1 
    From [Adventure Works] 

請注意:All成員已經是(幾乎)在MDX所有層級的成員。因此,包括第三查詢All會員,你既可以寫

Select {[Sales Territory].[Sales Territory].Members} 
     on 0, 
     {[Sales Reason].[Sales Reason Type].Members} 
     * 
     {[Sales Channel].[Sales Channel].Members} 
     on 1 
    From [Adventure Works] 

,或者,如果你真的想有軸的總只是沒了彩民從與層次結構的一個組合另一個的另一個成員,union兩個集合 - 一個元組包含All成員,另一個包含另外兩個層次的交叉連接。我使用的Union這裏的縮寫形式 - 這是+運營商集:

Select {[Sales Territory].[Sales Territory].Members} 
     on 0, 
     { ([Sales Reason].[Sales Reason Type].All, [Sales Channel].[Sales Channel].All) } 
     + 
     (
      {[Sales Reason].[Sales Reason Type].[Sales Reason Type].Members} 
      * 
      {[Sales Channel].[Sales Channel].[Sales Reason Type].Members} 
     ) 
     on 1 
    From [Adventure Works]