Reporting services 如何在SSRS报告中分配等级?

Reporting services 如何在SSRS报告中分配等级?,reporting-services,Reporting Services,我有一个列(impact/hr),经过一些计算后填充。现在我想给每一行分配一个等级。例如,最大美元金额的排名为1。如果您有任何写表达式的建议,我们将不胜感激。多谢各位 只需在报告中添加一些自定义代码-报告属性…-代码: Dim Rank AS Integer Function GetRank() AS Integer Rank = Rank + 1 Return Rank End Function 在需要排名的tablix详细信息单元格中,使用以下公式: =Code.GetRank(

我有一个列(impact/hr),经过一些计算后填充。现在我想给每一行分配一个等级。例如,最大美元金额的排名为1。如果您有任何写表达式的建议,我们将不胜感激。多谢各位

只需在
报告中添加一些自定义代码
-
报告属性…
-
代码

Dim Rank AS Integer

Function GetRank() AS Integer
  Rank = Rank + 1
  Return Rank
End Function
在需要排名的tablix详细信息单元格中,使用以下公式:

=Code.GetRank()

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

只需在
报告中添加一些自定义代码即可。
-
报告属性…
-
代码

Dim Rank AS Integer

Function GetRank() AS Integer
  Rank = Rank + 1
  Return Rank
End Function
在需要排名的tablix详细信息单元格中,使用以下公式:

=Code.GetRank()

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

这可能是您的第二选择

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


有关更多信息,请参阅该功能。

它可能是您的第二选项

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

有关更多信息,请参阅函数。

使用秩函数

选择[Impact per Hr],[My Rank]=Rank()结束(按[Impact per Hr]说明排序)

然后使用asc/desc,具体取决于您希望排名高或低的值。 这也独立于任何ORDERBY语句

对于这样的应用程序,Rank()比Row_Number()更可取,因为具有相同值的行将具有相同的秩,但具有不同的行号。

使用Rank函数

选择[Impact per Hr],[My Rank]=Rank()结束(按[Impact per Hr]说明排序)

然后使用asc/desc,具体取决于您希望排名高或低的值。 这也独立于任何ORDERBY语句


对于这样的应用程序,Rank()比Row_Number()更可取,因为相同值的行将具有相同的秩,但具有不同的行号。

步骤1:在报表生成器中报表属性的代码部分添加以下代码

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))

步骤1:在报表生成器中报表属性的“代码”部分添加以下代码

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))

影响/人力是基于数据集中的计算字段还是嵌入到文本框中?如果是后者,是否可以将其创建为数据集中的计算字段?此外,在生成数据集而不是在报表中进行计算时,是否可以计算出该字段?嗨,Ian,文本框中嵌入了计算字段。正如您所说,可以通过更改用于创建数据集的SQL来实现。如果没有其他选择,我将不得不使用它。谢谢,如果你能用T-SQL来做,也许最简单。。。这个答案有几个选项,但我不认为有任何选项像普通的老式t-SQL排名函数那么简单,即使它们可能适合您:Impact/Hr是基于数据集中的计算字段还是嵌入到文本框中?如果是后者,是否可以将其创建为数据集中的计算字段?此外,在生成数据集而不是在报表中进行计算时,是否可以计算出该字段?嗨,Ian,文本框中嵌入了计算字段。正如您所说,可以通过更改用于创建数据集的SQL来实现。如果没有其他选择,我将不得不使用它。谢谢,如果你能用T-SQL来做,也许最简单。。。这个答案有几个选项,但我认为任何选项都不如简单的旧t-SQL排名函数简单,即使它们可能适合您: