5

我知道我们不能将聚合函数用于矩阵中的过滤器。

这是AdventureWorks的情况。我有三个级别:

  1. 类别
  2. 子类别
  3. 产品

和 1 个 Calc_Member:

=With MEMBER Calc_Member as [Measures].[Internet Average Sales Amount]

实际上:

[Measures].[Internet Average Sales Amount]=
[Measures].[Internet Sales Amount]/[Measures].[Internet Order Count]

我希望层次结构中的每个级别都有不同的聚合。对于子类别和产品,公式Calc_Member就像我之前提到的:

[Measures].[Internet Average Sales Amount]

但是对于类别级别,我想要相关子类别的平均值:

WITH MEMBER Calc_Member AS
    Average(existing [Product].[Subcategory].[Subcategory].members
    , [Measures].[Internet Average Sales Amount])

在分析服务中,这工作正常,但我在基于此数据集的报告服务中有一个报告:

  • 类别
  • 亚类
  • 产品
  • Calc_member

在 ssrs 中,我使用具有三个行组的矩阵,并为每个组添加总计。对于类别级别 1,希望在 ssrs 中使用聚合函数(使用在分析服务中定义的 Formlula)并且它再次工作正常。

但是,如果我想对某个成员(例如类别、子类别、产品)使用过滤器,则会引发此错误:

不能在包含任何过滤器的报表中使用聚合函数“聚合”

这个错误也是可以接受的,但我不明白的是:如果我在 Matrix1 中使用聚合函数并且在 Matrix2 中使用过滤器,它也会抛出错误。

为什么?

4

1 回答 1

0

您可以将聚合加入数据集,然后将其用作过滤器吗?(显然我需要 50 声望才能发表评论)

例如:

 SELECT item, quantity, aggregateQuantity
 FROM TABLE T1
 LEFT JOIN (SELECT item, SUM(Quantity) AS aggregateQuantity FROM TABLE) T2
 ON T1.item = T2.item
于 2015-07-22T22:29:37.590 回答