13

我在 SSRS 报告中有一个表,它只显示一个组,而不是表的详细信息。我想找出正在显示的项目的行号,以便我可以使用色带。我尝试使用“Rowcount(Nothing)”,但我得到了明细表的行号。

我的基础数据类似于

ROwId   Team      Fan

1       Yankees   John
2       Yankees   Russ
3       Red Socks Mark
4       Red Socks Mary
...         
8       Orioles   Elliot
...         
29      Dodgers   Jim
...
43      Giants    Harry 

我的表只显示组如下所示:

ROwId   Team
2       Yankees
3       Red Socks   
8       Orioles
29      Dodgers 
43      Giants  

我希望它看起来像

ROwId   Team
1       Yankees
2       Red Socks   
3       Orioles
4       Dodgers 
5       Giants  
4

3 回答 3

34

您可以使用RunningValue表达式执行此操作,例如:

=RunningValue(Fields!Team.Value, CountDistinct, "DataSet1")

DataSet1是基础数据集的名称。

考虑数据:

在此处输入图像描述

创建一个简单的报告并比较RowNumberRunningValue方法显示可以RunningValue提供您所需的结果:

在此处输入图像描述

于 2013-07-10T23:19:45.353 回答
10

您可以通过一点点 vbcode 轻松实现这一点。转到报告 - 属性 - 代码并键入如下内容:

Dim rownumber = 0
Function writeRow()
  rownumber = rownumber + 1
  return rownumber
End Function

然后在您的手机上,使用=Code.writeRow()

一旦你开始在表中使用组,RowNumber 和 RunningGroup 函数就会开始出现一些奇怪的行为,因此只需编写一些代码来做你想做的事情就更容易了。

于 2013-07-10T23:19:17.643 回答
0

我不相信上面提供的所有建议都是一个适用于所有解决方案的解决方案。我的情况是我有一个包含多个列的分组。我无法使用商定的解决方案 RunningValue,因为我没有在函数中使用单个列,除非我将它们全部组合(例如计算列)以创建单个唯一列。

出于同样的原因,我不能按原样使用 VBA 代码函数,我必须在多个列和多个属性中使用相同的值,除非我使用其他类型的智能,如果我知道使用次数(比如 N columns * M 属性)然后我只能更新每个 NxM 调用的 RowNumber 但是,我看不到任何计数列函数,所以如果我添加一个列,我还需要增加我的 N 常数。我也不想添加一个新列,因为我不知道如何隐藏它,我也无法编写一个 vba 系统,我可以在其中调用函数 A,它只返回更新值(即

我唯一能想到的另外两个解决方案是将前面提到的组合列放在查询本身中,或者使用 DENSE_RANK 并对所有组列进行排序,即

DENSE_RANK() OVER (ORDER BY GroupCol1, GroupCol2, ...) AS RowNumber
于 2017-11-08T01:00:15.507 回答