2010-03-17 142 views
0

我想實現的目標看起來非常簡單,但我無法使其工作。 我的事實是它有個約會訂單,我與一個典型的時間維度「月」和‘年’的水平。MDX:集合中的集合

我想獲得一個輸出,其中列出訂單,爲過去6個月的數量和總,是這樣的:

 
Oct 2009 20 
Nov 2009 30 
Dec 2009 25 
Jan 2009 15 
Feb 2010 45 
Mar 2010 5 
Total  140 

我可以創建一套與成員2009年10月至2010年3月,我設法讓我的期望輸出的這一部分:

 
Oct 2009 20 
Nov 2009 30 
Dec 2009 25 
Jan 2009 15 
Feb 2010 45 
Mar 2010 5 

只是我輪不到總行。

回答

2

您可以通過添加所有成員的集合,然後它包裝全部在VisualTotals()函數

SELECT 
    ... on COLUMNS, 
    VISUALTOTALS (
     {[Month].[Month].[Oct 2009]:[Month].[Month].[Mar 2010] 
     , [Month].[Month].[All] } 
) ON ROWS 
FROM <cube> 
+0

嗨達倫! 我很抱歉,但這不適合我。 最讓我困惑的是: 請嘗試以下兩個查詢 1. select {[Measures]。[Sales Count]} ON COLUMNS, NON EMPTY VisualTotals(Hierarchize({[Customers]。[All Customers]。[美國]。[OR]。[奧爾巴尼]。兒童}),「*」)ON ROWS from [銷售] 2. select {[Measures]。[Sales Count]} ON COLUMNS, NON EMPTY Hierarchize({[Customers]。[All Customers]。[USA]。[OR] .Children,[Customers]。[All Customers]。[USA] [OR]。[Albany] .Children})從[銷售] ON ROWS 使用和不使用VISUALTOTALS時,您將得到相同的結果。 – TorstenS 2010-03-18 10:43:20

+0

這是因爲您顯示了所有可見成員的所有子項。因此,行軸上沒有與「不可見」成員相關的數量。如果您在[客戶]。[所有客戶] [美國]。[或]。兒童之後取消.children電話,您將看到第一個查詢將更改爲僅顯示[奧爾巴尼] ]級別。 – 2010-03-19 01:21:26

1

這裏是探險工程DW演示魔方一個可能的解決方案實現這一目標。該查詢選擇最後6個訂單計數並在日期維上添加一筆款項:

WITH MEMBER [Date].[Calendar].[Last 6 Mth Order Count] AS 
aggregate( 
ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]).Lag(6) 
: ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]) 

) 
SELECT {[Measures].[Order Count]} ON COLUMNS 
, {ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]).Lag(6) 
: ClosingPeriod([Date].[Calendar].[Month], [Date].[Calendar].[All Periods]) 
,[Date].[Calendar].[Last 6 Mth Order Count]} 
ON ROWS 
FROM [Adventure Works]