Previous 函数(报表生成器和 SSRS)

返回指定作用域内某项的前一个实例的值或该实例的指定聚合值。

注意

在 SQL Server Data Tools 中,您可以在报表生成器和报表设计器中创建和修改报表定义 (.rdl)。 每个创作环境提供了不同的方式来创建、打开和保存报表和相关项。 有关详细信息,请参阅 Web 上 microsoft.com 中的“在报表设计器和报表生成器中设计报表 (SSRS)”

语法

  
Previous(expression, scope)  

参数

expression
VariantBinary)用于标识数据和检索以前值的表达式,例如 Fields!Fieldname.ValueSum(Fields!Fieldname.Value)

作用域
(String) 可选。 组或数据区域的名称,或 Visual Basic) 中的 null (Nothing ,指定从中检索 由表达式指定的上一个值的范围。

返回类型

返回 VariantBinary

注解

Previous 函数返回在应用所有排序和筛选之后,指定作用域内计算的表达式的前一个值。

如果 表达式 不包含聚合,则 Previous 函数默认为报表项的当前范围。

在详细信息组中,使用 Previous 可以在详细信息行的前一实例中指定字段引用的值。

注意

函数 Previous 仅支持详细信息组中的字段引用。 例如,在详细信息组的文本框中, =Previous(Fields!Quantity.Value) 将返回上一行中 Quantity 字段的数据。 在第一行中,此表达式在 Visual Basic) Nothing 中返回 null (。

如果 表达式 包含使用默认作用域的聚合函数, Previous 则聚合聚合函数调用中指定的范围的上一个实例中的数据。

如果表达式包含指定非默认值范围的聚合函数,则函数的 Previousscope 参数必须是聚合函数调用中指定的范围的包含范围。

函数 LevelInScopeAggregatePrevious 不能在表达式参数中使用。 不支持将 recursive 参数指定给任何聚合函数。

有关详细信息,请参阅聚合函数引用(报表生成器和 SSRS)总计、聚合和内置集合的表达式作用域(报表生成器和 SSRS)

示例

说明

下面的代码示例置于数据区域的默认数据行时,提供上一行中 LineTotal 字段的值。

代码

=Previous(Fields!LineTotal.Value)  

说明

下面的示例显示一个表达式,该表达式计算某月特定天的销售额和上一年该月该天的销售额的总和。 该表达式将添加至属于子组 GroupbyDay的行的某个单元格中。 它的父组是 GroupbyMonth,该父组的父组是 GroupbyYear。 该表达式显示 GroupbyDay(默认作用域)和 GroupbyYear (父组 GroupbyMonth的父组)的结果。

例如,对于具有名为 Year的父组的数据区域,其子组名为 Month,子组的子组名为 Day (3 个嵌套级别)。 与组 =Previous(Sum(Fields!Sales.Value,"Day"),"Year") 关联的行中的表达式 Day 返回上一年同一月同一天的销售额值。

代码

=Sum(Fields!Sales.Value) & " " & Previous(Sum(Fields!Sales.Value,"GroupbyDay"),"GroupbyYear")  

另请参阅

在报表中使用表达式(报表生成器和 SSRS)
表达式示例(报表生成器和 SSRS)
表达式中的数据类型(报表生成器和 SSRS)
总计、聚合和内置集合的表达式作用域(报表生成器和 SSRS)