3

背景

我有一个连接表,其中包含从 SQL Server 2008 R2 获得的事件、客户和区域。查询很简单,我选择了相关字段并过滤掉了不相关的数据。我得到一个作为 datediff(...) 的 ResolveTime 字段我有一个矩阵 tablix,它按区域分组的列中的数据组织,然后是区域,以及按事件所有者分组的行。

这些字段显示平均值、计数和(这是我的问题所在)低于平均值的百分比。在整个数据集的第二个基本表中计算相同的细节。如果您感到困惑,这里是表格的屏幕截图。

表设置

问题

我用于低于平均百分比的表达式如下:

=Sum(iif(Fields!ResolveTimeMinutes.Value < avg(fields!ResolveTimeMinutes.Value), 1, 0)) / countrows()

当我在矩阵中使用它时,它工作正常,但基于组内的平均值工作。我尝试将数据集用作总和和平均值的范围,但都返回有关嵌套聚合和范围的错误。我不能在聚合内嵌套具有范围的聚合,或者不能在范围聚合内嵌套另一个聚合。

我尝试创建一个包含我有兴趣比较的值的变量,但我不允许在聚合中引用它。

=Sum(iif(Fields!ResolveTimeMinutes.Value < Variables!avgResolveTime.Value ), 1, 0)) / countrows()

这给了我一个错误variable values cannot be used in aggregate functions.

我什至尝试将平均值单独计算为一个单独的数据集并尝试在比较中引用它,但是关于嵌套聚合和我想要做的另一个错误。

任何建议将不胜感激。

4

1 回答 1

0

好吧,今天早上想通了。

我创建了一个内部参数,使其在报告中不可见,并从计算我试图直接从 iff 函数引用的“GlobalAverage”的同一数据集中检索默认值。

询问:

SELECT avg(datediff(minute, CreatedDateTime, ResolvedDateTime)) as AverageTTR
from incident 
where changeid is null and linkedproblem is null and count_numberoftasks = 0

表达:

=Sum(iif(Fields!ResolveTimeMinutes.Value < Parameters!GlobalAverage.Value, 1, 0)) / countrows()

奇迹般有效。希望对可能遇到同样问题的其他人有所帮助!

于 2012-09-19T16:19:14.617 回答