SSRS行组+列组=行号问题

时间:2009-12-01 14:13:53

标签: reporting-services row-number

我回来了另一个SSRS问题: - )

我正在处理调查数据。我有一个程序可以返回组织每个问题的响应计数。因此,我的报告被定义为行组织组和列回答组。组织和答案的数量都是可变的。这是按预期工作的。我尝试在组织旁边添加一个RowCount,以便我可以显示排名,但每个组织每个问题有一行的事实意味着我每个组织有8行。

这是一个例子:
Chart

这是我的报告定义:
Chart
排名表达式目前为:=RowNumber(Nothing)

理想情况下,排名将是1,2,3,4等......我已经尝试了范围到行组,列组而没有。没有帮助。

非常感谢任何帮助!

7 个答案:

答案 0 :(得分:25)

有同样令人沮丧的问题;浪费了很多时间。最终,这个解决方案也有所帮助:

=RunningValue(CountDistinct("YourTableName"),Count,"YourTableName")

这里的诀窍不是在表/矩阵中使用组的名称,而是使用表本身的名称。是的,人们会认为在函数RowNumber中使用范围的表名应该有效,但事实并非如此。

答案 1 :(得分:2)

尝试使用:

runningvalue(Fields!AnswerText.Value,CountDistinct,"NameOfOrganizationGroup") 

如果是矩阵,请将范围的名称从行范围更改为矩阵范围。

答案 2 :(得分:2)

我使用自定义代码。

将此添加到报告配置的代码部分:

Dim private count as integer = 0
Dim private iniRow as integer = 0
Public function nroFila(Byval rowNum as integer) as integer
    if iniRow = 0 then
        iniRow = rowNum
    end if

    if rowNum = iniRow then
        count = 0
    end if

    count = count + 1
    Return count
End function

然后,在组内的单元格中调用该函数:

=Code.nroFila(RowNumber(Nothing))

答案 3 :(得分:1)

我似乎已经找到了一个解决方案,但感觉就像是一个黑客......我要留下这个没有答案,看看是否有其他人可以提供更好的解决方案(阅读更少的hackish)。

我的排名表达现在是:
=RowNumber(Nothing)/Count(Fields!AnswerText.Value)

一切似乎都没问题。我想我应该是IIf(Count ... = 0,然后是RowNumber,否则我得到的......

答案 4 :(得分:0)

最好的办法是让Rank列等于= RowCount()/ 8

由于您确定每个可见行包含总共8行,因此这应该可以正常工作。

答案 5 :(得分:0)

在现有的列旁边添加另一个等级列,并将另一个表达式放在那个从rank(rowcount?)获取值的表达式中,并将其除以8.然后使旧的等级列不可见。

答案 6 :(得分:0)

您绝对确定使用RowNumber("NameOfOrganizationGroup")不起作用吗?

单击矩阵,单击左上角选择框以选择整个事物,然后右键单击选择边框并获取属性。切换到“组”选项卡,然后查看部分中组的名称。这就是RowNumber()函数范围内的内容。

如果你已经知道并尝试过,我的道歉 - 我不是故意假设你不知道。从您的问题来看,这不是100%明确表示这不是解决方案。