如何在SSRS报告中分配Rank?

时间:2013-10-24 15:45:14

标签: reporting-services

我有一个列(影响/小时),在一些计算后会填充。现在我想为每一行分配一个等级。例如,最高美元金额获得等级1.任何写表达的提示都将受到赞赏。谢谢。 enter image description here

4 个答案:

答案 0 :(得分:1)

只需在Report - Report Properties... - Code中添加一些自定义代码:

Dim Rank AS Integer

Function GetRank() AS Integer
  Rank = Rank + 1
  Return Rank
End Function

在您想要排名的Tablix详细信息单元格中,使用以下公式:

=Code.GetRank()

每次处理该单元格时,它会向排名中添加一个并显示结果。

答案 1 :(得分:1)

这可能是您的第二选择!

您可以按升序排列Impact\Hr,并使用RowNumber功能显示排名。

有关详细信息,请参阅RowNumber功能。

答案 2 :(得分:1)

第1步:在Reports Builder的报表属性的代码部分中添加以下代码。

Public dim previousValue as Integer = 0
Public dim i as Integer = 0
Public dim flag as Boolean = False
Public dim lastRank as Integer = 1

Public Function Rank(sourceValue as Integer ) As Integer

if previousValue = sourceValue
   i = i + 1
   flag = True
end if 
     
if previousValue > sourceValue
    lastRank = lastRank + 1
    flag = False
end if

previousValue =sourceValue

if flag = True 
    return lastRank
else
    lastRank = lastRank + i
    i = 0
    return lastRank
end if
 
End Function

第2步:从要显示排名的单元格中调用上述函数,如下所示:

=code.Rank(SUM(Fields!SumTotal_Ending_Balance.Value))

答案 3 :(得分:0)

使用Rank功能。

选择[每人每小时的影响],[我的排名] =排名()结束(按每人每小时的影响顺序排序)

然后根据您想要排名高或低的值来使用asc / desc。 这也与任何order by语句无关

对于像这样的应用程序,Rank()优于Row_Number(),因为相同值的行将具有相同的Rank,但将具有不同的Row_Number。