我尝试计算一段时间内的平均值:我在ssrs中创建了一个tablix:
我在查询中使用了这个表达式:
Avg(case when CounterName = 'Count 1' then calculationUnits end) as Average
图片中显示的平均值:
=SUM(Fields!Prod.Value)/3
我将价值总和除以3(在一天中有3个班次),但我想在该日期有一个平均值。
我可以在查询中使用:
OVER(PARTITION BY [intervaldate])
我想将每台机器的总和除以日期值
答案 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。在详细信息组之外添加两个新行:
现在在新行中添加表达式,以获得总和和平均值,例如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
表达式评估为NULL
,avg()
会忽略该表达式。
你的表达有else 0
。这被视为合法值,因此不匹配的行会影响最终结果。