计算平均日期

时间:2016-02-19 11:07:37

标签: sql reporting-services

我尝试计算一段时间内的平均值:我在ssrs中创建了一个tablix: enter image description here

enter image description here

我在查询中使用了这个表达式:

   Avg(case when CounterName = 'Count 1' then calculationUnits end) as Average

图片中显示的平均值:

=SUM(Fields!Prod.Value)/3

我将价值总和除以3(在一天中有3个班次),但我想在该日期有一个平均值。

我可以在查询中使用:

OVER(PARTITION BY [intervaldate])

我想将每台机器的总和除以日期值

2 个答案:

答案 0 :(得分:0)

尝试获取日期集中每个日期的行,并使用SSRS函数获取平均值和总和。

要在SQL中过滤查询,请使用SQL语句中的参数。 您的查询应如下所示:

select
    *
from
    yourData
where
    date BETWEEN @StartDate AND @EndDate

此声明的示例数据:

yourDate               M101   M102  M103
2015-12-24 12:00:00    100    34    54
2015-12-25 12:00:00    25     67    87
2015-12-26 12:00:00    30     434   54
2015-12-27 12:00:00    140    42    65
2015-12-28 12:00:00    21     66    77

现在创建一个包含SSRS报告中数据的Tablix。在详细信息组之外添加两个新行:

enter image description here

现在在新行中添加表达式,以获得总和和平均值,例如M101:

总和:

=Sum(Fields!M101.Value)

表示平均值(过期日期)

=SUM(Fields!Prod.Value) / COUNTDISTINCT(Fields!DateValue.Value)

答案 1 :(得分:0)

我并没有真正看到您的代码片段和示例数据之间的关系。但是,您想要的逻辑可能是:

Avg(case when CounterName = 'Count 1' then calculationUnits end) as Average

请注意,没有else子句。如果没有else case表达式评估为NULLavg()会忽略该表达式。

你的表达有else 0。这被视为合法值,因此不匹配的行会影响最终结果。