代码之家  ›  专栏  ›  技术社区  ›  Dom Vito

在“上一个”函数中指定范围

  •  1
  • Dom Vito  · 技术社区  · 8 年前

    我想创建一个规则,只有当某个列与集合中的最后一行不同时,它才会显示在某个列中。它们都是订单中的行,但我希望对订单中的每个新项目重新启动规则。

    我当前正在使用:

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

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

    所以我的问题是,我希望它显示在每个项目的第一行,但前一个子句只查看所有项目的前一行。我尝试添加范围(我有一个“LINE_NO”组),但没有成功。所有REL_NO均显示。

    显示所有数据

    enter image description here

    试图隐藏

    enter image description here

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

    2 回复  |  直到 8 年前
        1
  •  1
  •   Ian Preston    8 年前

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

    假设我有类似于你的数据:

    enter image description here

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

    enter image description here

    请注意,有一个基于 LINE_NO ,尽管组没有标题行。

    我会通过使用 隐藏重复项 的属性 REL_NO 文本框:

    enter image description here

    您可以使用特定的作用域设置此值;我用过 数据集1 这里,即考虑数据集中的所有行,而不仅仅是 行_否

    这似乎按预期工作:

    enter image description here

        2
  •  0
  •   Alex W    8 年前

    如果您没有其他列来对具有相同“行号”的行进行排序,那么下面的快速脏查询将生成一个伪查询并返回所需结果。

    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