我正在将SSRS 2012中按产品类别分组的销售量排名前10位。
我需要前十名的总数,但它显示了完整的总数。我无法在数据集级别执行此操作,因为我需要报告中其他部分的完整数据集。我尝试了MSDNlink中给出的解决方案,但这也没有帮助。提前致谢。
最佳答案
这种方法实际上效果很好。
您尚未对数据/元数据的概念一无所知,但是可以通过一个简单的示例来解释这些概念。考虑以下数据:
我们将基于此创建一个简单的报告,并按grp
列分组:
按总值对组进行排序,从最高到最低:
为了获得运行排名和运行总数,我们使用RunningValue函数。
要获得组排名,请使用:
=RunningValue(Fields!grp.Value, CountDistinct, Nothing)
要获得运行总使用量:
=RunningValue(Fields!val.Value, Sum, Nothing)
最后,我们需要显示前N个值的总计;在这种情况下,我显示的是前2个。
对于第二个组详细信息行,请使用以下行可见性表达式:
=IIf(RunningValue(Fields!grp.Value, CountDistinct, Nothing) = 2, false, true)
也就是说,仅在存在两个组(即前2个)时才显示此行。您可以根据需要更改该值。
这向我们显示了所需的总行数:
您需要将这些概念应用于您的数据。如果您仍然遇到问题,建议您尝试使用上面的数据/代码复制我的结果,以确保您了解所涉及的所有概念。
评论后编辑:
对于少于N个组但仍要显示最后一个总数的情况,您需要对前N行行可见性表达式添加额外的检查,例如:
=IIf(RunningValue(Fields!grp.Value, CountDistinct, Nothing) = 10
or (RunningValue(Fields!grp.Value, CountDistinct, Nothing) = CountDistinct(Fields!grp.Value, "DataSet1") and CountDistinct(Fields!grp.Value, "DataSet1") < 10)
, false
, true)
因此,现在表达式将在第10行显示,或者如果DataSet中的组总数少于10,则将在最后一行显示。
有点复杂,但是过去对我有用。根据您的数据和报告设置,您可能需要对作用域进行一些尝试,以使其在您的环境中正常工作。
关于visual-studio-2012 - 如何获得SSRS 2012前10大销售额的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17275232/