MDX显示所有销售至今

时间:2014-06-16 19:40:07

标签: mdx

我有一个巨大的现金流表,这意味着收入的+ int值和结果的-int值。

我有MeasureGroup用于汇总金额。

我现在不仅要显示每月的金额,还要显示当前所有过去时间的总和,如下所示:

Month  MoneyAmount  Total
1      20           20
2      -10          10
3      5            15
4     -10           5

所以我知道第一部分就像

select [Measures].[Money] on 0,
[Date].[Month].Members on 1
From MyCube

但是如何添加总和列?

我想过像SUM这样的东西({NULL:[Date]。[Month] .CurrentMember},[Measures]。[Money])但是它也没有用:(

2 个答案:

答案 0 :(得分:0)

在MDX中,总数已经存在。你不必进行复杂的计算就可以得到它。

但这取决于您确切的层次结构如何调用All成员。如果您有一个名为[Date].[Date]的日期用户层次结构,并且它具有名为[Date].[Date].[Month]的月份级别,那么层次结构的所有成员可能会被称为[Date].[Date].[All]。如果[Month]是日期维度的属性层次结构,那么"所有成员"可能会被称为[Date].[Month].[All]。在后一种情况下,all成员已经是集合[Date].[Month].Members的第一个成员。当您提出问题时,我假设情况并非如此,并且您正在使用用户层次结构。然后,您可以将MDX查询更改为

select [Measures].[Money] on 0,
Union([Date].[Month].Members, { [Date].[Date].[All] }) on 1
From MyCube

请注意,在设计Analysis Services维度时,您可以在维度的属性设置中更改“所有”成员的名称,因此在不知道多维数据集中此设置的详细信息的情况下,我无法知道确定的名称。所以你可能需要调整所有成员的名字。

您可以在MDX窗口中的SQL Server Management Studio中找到此名称,如下所示:打开您正在使用的层次结构,然后打开"成员"节点,在其下面你应该找到"所有会员"。您可以将其拖到MDX语句中,并在那里显示正确的名称。

答案 1 :(得分:0)

如同在跑步中一样?

您需要一个计算出的度量,如下所示:

With Member [Measures].[Running Sum] as Sum(  ( [Date].[Months].Members.Item(0) : [Date].[Months].CurrentMember ), [Measures].[Money])
Select [Date].[Months].Members on Rows,
{[Measures].[Money], [Measures].[Running Sum] } on Columns 
From [MyCube]