visual-studio-2012 - 如何获得SSRS 2012前10大销售额的总和

标签 visual-studio-2012 reporting-services ssis ssas

我正在将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/

相关文章:

c - 如何在 Visual Studio 中使用 "simulate"C99 进行变量声明

SQL Server 2012 : How to script all database stored procedures into separate . SQL 文件?

c# - 无法在 Visual Studio 2012 中安装任何 NuGet

sql-server - SSIS OLEDB 连接管理器 - 无法连接到数据库(未显示数据库名称)

c# - 如何在 SSIS 中使用标志枚举作为自定义组件的属性?

c# - 在 C# 中的 REPLACE 函数中添加 Case 语句

git - 将 Visual Studio 2012 的内置 merge 工具与 Git 结合使用

windows - 删除报表服务器(2014 native 模式)加密 key 和数据 [PowerShell]

reporting-services - ssrs 中的错误。已添加具有相同 key 的项目

asp.net - 访问报表服务器时出现 AppPool 权限问题