如何像子查询一样实现SSRS Y-Axis?

时间:2013-07-22 22:15:38

标签: visual-studio-2012 reporting-services

我有一个从存储过程中提取的报告。 SP运行需要3分钟,所以我不想让数据库多次提取这些信息。我应该已经在数据集中拥有它了,那么我如何才能获得这些百分比(如果有的话)?

我有数据集中的数据,并且我显示基于该数据的图表,因此我无法直接更改数据集。我需要所有的信息。到目前为止一切都很顺利。现在,在报告的底部,我想要一个折线图,显示超过阈值的行数与未超过给定周数的阈值的行数进行比较。 WeekNumber已经是我在存储过程中收集的列。

我已经将类别组设置为WeekNumber,所以我相信我的X轴应该已经设置为。现在,我需要将Y轴设置为超出指定周数范围的值的百分比。

我的Y轴值如下:

OveragePercent=FormatPercent(
               (SELECT COUNT(0) FROM ThisWeek WHERE DataSet1.Threshold > 50) /
               (SELECT COUNT(0) FROM ThisWeek WHERE DataSet1.Threshold < 50), 2)

任何想法或建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

在报告中设置共享数据集,而不是附加的数据集。发布数据集与执行DataSource或报表的过程非常相似。发布后,在其相应的文件夹中单击它。选择下拉箭头,然后选择管理。选择&#39;缓存&#39;并设定持续时间。

通常当我有批量构建与事务相关的事情时,我会缓存它们。 (办公地点,人员等)这种方式每天早上我得到最后一天的输入,然后使用该数据而不是每次查询。据我所知,这也适用于过程和函数。

答案 1 :(得分:0)

我找到了解决方案。

在我的SSRS表中,我使用DataSet级别的总和与组级别的总和来得出总百分比。该表使用MyDataSet并按日期分组。我可以根据Loads.value判断当天交付的负载数量。然后,我可以通过使用以下内容确定哪个工作日的每周负载百分比最高。

=Sum(Fields!Loads.Value) / Sum(Fields!Loads.Value, "MyDataSet")

这给了我每天的总体百分比。

然后我需要根据是否设置了标志来过滤掉一些数据(因此主帖的原因。)使用相同的方法,我发现IIF函数甚至在一个总和内的行级工作,所以它变得相当“明显”(虽然当时对我来说并不明显)。

=Sum(IIF(Fields!Option1.value=1,Fields!Loads.Value, 0)) / Sum(Fields!Loads.Value, "MyDataSet")

这告诉我本周相同负荷的百分比中选择了选项1。

我希望这个解决方案能够帮助其他人。