2010-03-17 132 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]