Kra*_*ous 8 ssas ssis reporting-services visual-studio-2012
我正在按照SSRS 2012中的产品类别分列销量前10名.我需要这些前10名的总数,但它显示了完整的总数.我不能在数据集级别上这样做,因为我需要报告中其他部分的完整数据集.我尝试了MSDNlink中给出的解决方案,但这也没有帮助.提前致谢.
Ian*_*ton 17
这种方法确实很有效.
您还没有知道您的数据/元数据是什么样的,但可以用一个简单的例子来解释这些概念.请考虑以下数据:

我们将根据此列出一个简单的报告,按grp列分组:

按总数从最高到最低对组进行排序:

为了获得运行等级和运行总计,我们使用RunningValue函数.
要获得团体排名,请使用:
=RunningValue(Fields!grp.Value, CountDistinct, Nothing)
Run Code Online (Sandbox Code Playgroud)
为了获得运行的总使用量:
=RunningValue(Fields!val.Value, Sum, Nothing)
Run Code Online (Sandbox Code Playgroud)
最后,我们需要显示前N个值的总和; 在这种情况下,我正在显示前2名.
对于第二个组详细信息行,请使用以下行可见性表达式:
=IIf(RunningValue(Fields!grp.Value, CountDistinct, Nothing) = 2, false, true)
Run Code Online (Sandbox Code Playgroud)
也就是说,只有当有两个组(即前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)
Run Code Online (Sandbox Code Playgroud)
所以现在表达式将显示第10行,或者如果DataSet中的组总数小于10,它将显示最后一个组行.
它有点复杂,但它过去对我有用; 根据您的数据和报告设置,您可能需要使用Scope来使其在您的环境中正常工作.
如果您只需要前10名而不是总计的总数,则可以按前N ProductCategory过滤表格,并按SalesVolume Z将您的ProductCategory组排序为A.
例如,我有一张销售订单和小计表.我显示前十名最高总数

我按SalesOrderID组排序,按我的值(TotalDue)递减.然后我过滤了我的表,所以它只显示前10名SalesOrderID.

如果你有很多数据,你可能必须看看它是如何执行的,因为我认为表过滤器在运行时发生.
| 归档时间: |
|
| 查看次数: |
40933 次 |
| 最近记录: |