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

时间:2012-07-09 07:26:11

标签: reporting-services filter matrix ssrs-2008 aggregate

我知道我们不能在矩阵中使用聚合函数作为过滤器。

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

  1. 分类
  2. 子类别
  3. 产品
  4. 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的folmula就像我之前提到的那样:

    [Measures].[Internet Average Sales Amount]
    

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

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

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

    • 类别
    • subcaegory
    • 产品
    • Calc_member

    在ssrs中,我使用一个包含三个行组的矩阵,并为每个组添加总计。对于类别1,想要在ssrs中使用聚合函数(使用在分析服务中定义的Formlula)并再次正常工作。

    但是如果我想在某个成员上使用过滤器(例如类别,子类别,产品) 它抛出这个错误:

      

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

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

    为什么?

1 个答案:

答案 0 :(得分: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