使用MDX的最后一个非空子项

时间:2013-05-13 18:47:57

标签: sql sql-server-2008 ssas mdx

[编辑:示例并不完全正确]

我一直在解决这个MDX问题...... 我正在制作关于计费的多维数据集。

我有2个(相关)维度:预算单和月
一个衡量标准:金额

budgetbill date         Amount
1548632    2012-11-04   50
1548632    2012-11-23   40  <--
1548632    2012-12-16   70  <--

1724687    2012-10-02   120
1724687    2012-10-23   170
1724687    2012-10-89   200  <--

TOTAL                   310

我还有一个日期层次结构[BB UpdateDate]

年 - 季 - 月 - 周 - 日

所以我需要每个月的最后金额超过预算单。
在上面的例子中,40 + 70 + 200 = 310

我试过的其中一个mdx代码片段

with member [Measures].[test] as
Sum(Tail(nonempty(Descendants([BB UpdateDate].[BB UpdateDate Hierarchy].currentmember, [BB UpdateDate].[Month])
,[Measures].[Amount]), 1),[Measures].[Amount])

select [Measures].[test] on columns
,nonempty([BB UpdateDate].[Month]) on rows
from [BudgetBill]
where {[BudgetBill].[BudgetBillNr].&[1548632],[BudgetBill].[BudgetBill].&[1724687]}

给出120 + 170 + 200 = 490 - &gt; 不正确...... 这只是一个(接近)的例子,但我尝试了很多东西!

提前感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

我认为这会解决问题

with

member [measures].[maybe] as
sum(
generate(
    Descendants([date].[BB Update Hierarchy].currentmember, [date].[BB Update Hierarchy].[month])
    ,tail(
        nonempty(Existing [date].[BB Update Hierarchy].[date], [Measures].[amount])
    ,1)
)
,[Measures].[amount])

希望这有帮助