在 Previous 函数中指定范围

Specify a scope in the Previous function

我想创建一个规则,仅当某列与一组中的最后一行不同时,才在该列中显示某些内容。它们都是订单的行,但我希望为订单中的每个新项目重新启动规则。

我目前正在使用:

=IIF(Fields!REL_NO.Value = Previous(Fields!REL_NO.Value), Nothing, Fields!REL_NO.Value)

REL_NO 是我要隐藏的字段,如果与最后一行相同。附件是我的数据集的图片,显示 rel_no 变化。

所以我遇到的问题是我希望它显示在每个项目的第一行,但前一个子句只查看所有项目的前一行。我尝试添加范围(我有一个 "LINE_NO" 组),但这没有用。 REL_NO 全部显示。

显示所有数据

试图隐藏

如果您需要更多上下文,请告诉我。

如果您没有另一列来对具有相同 "Line No" 的行进行排序,以下快速而肮脏的查询将生成伪查询和 return 所需的结果。

WITH a (rn, ln, delno)
AS
    (
    select row_number() over( order by "Line No") rn, "Line No" ln, "Del No" delno
    from test
    )

select 
  rn, 
  ln,
  case when delno = (select top 1 delno from a b where b.ln <= a.ln and b.rn < a.rn )
  then cast( null as integer)
  else delno
  end
from a

我会以稍微不同的方式处理这个问题。

假设我有与您相似的数据:

以及基于此数据的简单报告:

请注意,有一个基于 LINE_NO 的组,尽管该组没有 header 行。

我会通过使用 REL_NO 文本框的 HideDuplicates 属性 来达到你想要的结果:

你可以设置一个特定的范围;我在这里使用了 DataSet1,即考虑数据集中的所有行,而不仅仅是 LINE_NO 组的范围。

这似乎按预期工作: