MDX:集合上的聚合

时间:2010-03-17 14:22:17

标签: 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 个答案:

答案 0 :(得分:2)

您可以通过将ALL成员添加到集合中然后将其全部包装在VisualTotals()函数中来实现此目的

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

答案 1 :(得分:1)

这是Adventure Works 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]