在Previous函数中指定范围

时间:2016-01-19 16:33:27

标签: sql reporting-services ssrs-2008 reporting ssrs-2008-r2

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

我目前正在使用:

=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 个答案:

答案 0 :(得分:1)

我会以一种略有不同的方式接近这一点。

说我的数据与你的相似:

enter image description here

基于此数据的简单报告:

enter image description here

请注意,有一个基于LINE_NO的组,但该组没有标题行。

我会使用REL_NO文本框的隐藏重复属性来达到您想要的结果:

enter image description here

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

这似乎按预期工作:

enter image description here

答案 1 :(得分:0)

如果您没有其他列来对具有相同"行号"的行进行排序,则以下快速和脏查询将生成伪查询并返回所需结果。

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