Reporting services SSRS-从sum中排除隐藏值-无SQL使用行号()

Reporting services SSRS-从sum中排除隐藏值-无SQL使用行号(),reporting-services,sum,hidden-field,Reporting Services,Sum,Hidden Field,希望use能帮助我做到这一点: 我的数据集使用预构建模块,因此无法使用SQL为字段添加行号() 我需要能够从总和中排除隐藏值,如下所示: 在字段中,我使用了以下表达式: IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),0,Fields!SpaceArea.Value) 在该字段的SpaceArea->Visibility->show或hide的Textbox属性中,我还将此表达式用于hidden: =IIF(Fields!Space

希望use能帮助我做到这一点:

我的数据集使用预构建模块,因此无法使用SQL为字段添加行号()

我需要能够从总和中排除隐藏值,如下所示:

  • 在字段中,我使用了以下表达式:
    IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),0,Fields!SpaceArea.Value)

  • 在该字段的SpaceArea->Visibility->show或hide的Textbox属性中,我还将此表达式用于hidden:
    =IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),True,False)

  • 和总和:
    =Sum(IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),Fields!SpaceArea.Value,Nothing))

  • 然后我得到了这个错误消息:

    不能将以前的函数指定为嵌套聚合

    事先非常感谢

    编辑1:

    SpaceID SpaceArea RowNumber A 123 1 A 123 2 A 123 3 B 12 1 B 12 2 C 1 1 SpaceID SpaceArea行数 A 123 1 A 123 2 A 123 3 B 12 1 B 12 2 C 1 1 注意事项:

  • SpaceID被分组为
    SpaceID\u组
  • SpaceArea=(123+12+1)
    的预期总和
  • 无法在(分区依据…)上使用
    行编号()
    ,因为没有SQL。查询是用XML而不是SQL设计的 我设法在tablix中创建了另一列,行值为
    =行号(“SpaceID\u组”)

    但我不知道如何把它和我的总数联系起来。如果我有SQL,它会是这样的:
    sum(iif(Fields!RowNumber.Value=1,Fields!SpaceArea.Value,Nothing))

  • 向报告中添加以下自定义代码(返回值用于调试)
  • 公共共享MyTotal作为整数
    函数AddTotal(ByVal t作为整数)作为整数
    MyTotal=MyTotal+t
    返回我的总数
    结束功能

  • 在SpaceId上分组(就像您已经做的那样)并隐藏它

  • 将表达式
    code.AddTotal(Fields!SpaceArea.Value)
    添加到SpaceId组

  • 将表达式
    code.MyTotal
    添加到字段摘要中。 在某些版本(如SSRS 2005)中,由于执行顺序的原因,您可能会注意到计算返回零。在本例中,添加一个字段,该字段的表达式位于表下方


  • 您的数据集中是否有唯一的列?对于这个受限场景,唯一想到的可能是一个代码隐藏函数,它查找唯一的列值并返回0,或者返回基于先前逻辑的值,您将使用vb进行编码。这似乎太容易了,但是您是否尝试过对值求和?您已将该值设置为0,以便它可以正常工作。非常感谢您的快速回答。他们都没有工作。即使我将复制的值设置为0加上隐藏。总和仍然将这些值相加。使用Previous aggregate函数时出现了我前面提到的错误:=Sum(IIF(Fields!SpaceID.Value=Previous(Fields!SpaceID.Value),Fields!SpaceArea.Value,Nothing))错误是:aggregate,RowNumber,RunningValue,在计算字段表达式中不能使用Previous和lookup函数。即使我将重复值设置为0,然后尝试作为Sum(Fields!SpaceArea.value),它仍然不起作用。等等,如果你已经在你的tablix上创建了一个包含行号的新列,为什么不能使用你提到的IIF语句呢?嗨,NIKTRS,我可以在页脚添加一个文本框。然后我在文本框中添加了这个表达式:=Sum(ReportItems!SpaceArea.value),得到了非常正确的Sum结果,这是我期望看到的结果。但是,如何将该值从页脚中的隐藏文本框链接到主表中的报告?@Tubi我已使用自定义代码更改了方法,效果更好。我听从了您的建议。首先,由于您说RowId不起作用,我在这里看不到它的作用,所以我删除了RowId列。我将代码添加到报告中,并将code.MyTotal添加到总和中。然而,它只是一个接一个地求和。例如,它应该和1+2+3+4+5相加。但是第一次结果是1,当我选择上一页,返回到最后一页时,sum=3表示(1+2),我做了相同的操作:切换页面,第三次结果是sum=6,表示(1+2+3),然后继续这样。不确定我在这里是否做错了什么…您使用的是哪个版本的SSRS?嗨,Niktrs,我终于能够按如下方式使其工作:=Sum(Max(Max(Fields!SpaceArea.Value,“SpaceIDGroup”))我非常感谢您的好意和宝贵的时间。:)