熟练使用SQL但不熟悉MDX,我无法理解这一点:

我有一个事实表,其中包含每月帐户余额的快照。我需要将余额作为一种半附加措施进行累积 - 显然,直接总和不适用于余额。但是,我需要通过将所有帐户的余额加在一起来分别在每个月内汇总所有余额,因此“lastnonempty”和这个概念也不适合我。例如,如果事实如下:

Date        AccountNo     Balance
2009-01-31  1111          $100
2009-01-31  2222          $100
2009-01-31  4444          $100
2009-01-31  5555          $100

2009-02-28  1111          $100
2009-02-28  2222          $200
2009-02-28  3333          $500
2009-02-28  5555          $50

etc.

我有一个帐户维度,将帐户分组为主要类别/次要类别/帐户层次结构,我需要这样的输出,它汇总所有帐户中每个月的余额:

Month        Total
January 09   $400
February 09  $850

按帐户类型划分:

Month        Total
January 09   $400
  Type 1      $200
    1111       $100
    2222       $100
  Type 2     $200
February 09  $850
  Type 1     $300
  Type 2     $550

但是,余额不应该在几个月,几个季度或几年之间求和,因为它没有意义,而且它们会被计算两次。任何较长的时间间隔都应显示期间结束:

Quarter    WRONG    Correct
Q1         $1250    $850   // should be the sum of balances for the *last* month in Q1
  Type 1   $500     $300
  Type 2   $759     $550

如果我使用股票“lastnonempty”聚合,我似乎只得到一个月的文字最后一个帐户行,而不是上个月帐户余额的总和。就好像这个月的总数只显示当月存在的一个随机账户的余额,而不是总数。 (我确定它不是随机的,可能是根据存储顺序选择一个)

我确信我只是在做一些简单,错误的事......

有帮助吗?

解决方案

我想我解决了这个问题:我的余额非常稀疏的源数据 - 只有非零余额的行,而余额为零时没有帐户的行。这使得一切都变得棘手(想象一下作为库存,你有部件的数量,这些数量通常为零,但当它们为0时,那么事实表中的行就会丢失)

我能够在数据源上创建一个“重新加入”的视图。所有额外的行,余额为零,之后ClosingPeriod()函数开始按预期工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top