按月分组的每日平均计数

时间:2012-02-16 18:37:13

标签: crystal-reports

我正在试图找出按月显示每日平均值的最佳方法。

这是数据的样子

Date(date),Location(string),UnitID(string)
2011-12-1,A,123
2011-12-1,A,456
2011-12-1,B,789
2011-12-1,B,246
2011-12-2,A,135
2011-12-2,A,123
2011-12-2,B,789
2011-12-2,B,468
...

我们想要一份显示以下内容的报告:

(location)   12/2011    1/2012    2/2012 (by month)
A             12.5        10.3      14.0
B             22.1        20.9      25.6

应根据每个月/位置组合的一般概念计算摘要字段:

Avg(Count(UnitID))/(days in month) *see below for clarification, this formula doesn't really make much sense.

平均值(Count(UnitID))是最难的部分。交叉表最适合,但此时的任何操作都可以。

非常感谢任何帮助。

为清晰起见编辑:数据是所有发生故障的单位的列表。每天有几个单位失败,分散在几个地方。在英语中,我想要的是每月平均单位失败次数,按位置分组。

1 个答案:

答案 0 :(得分:0)

我建议在交叉表中执行此操作。

首先,在报告中添加如下所示的公式(称为perMonthCount):

1 / DatePart ("d", 
              DateAdd ("d", 
                       -1, 
                       DateAdd ("m", 
                                1, 
                                DateAdd ("d", 
                                         1-DatePart ("d", {failures.fail_date}),
                                         {failures.fail_date}) ) ) )

接下来,从菜单中选择Insert > Cross-Tab...,并在Cross-Tab Expert dailog的Cross-Tab选项卡中指定以下值:

  • 行:您的位置字段
  • 列:您的失败日期字段(使用“组选项”按钮指定应打印列for each month,而不是默认的for each day。)
  • 汇总字段:@perMonthCount公式字段(汇总操作应默认为Sum of。)

在Cross-Tab Expert dailog的Customize Style选项卡中,选中Suppress Row Grand Totals复选框。 (如果您不希望在报告末尾看到所有位置的总计,您可能还需要选中“抑制列总计”复选框。)

单击Cross-Tab专家对话框底部的OK,然后将Cross-Tab拖放到报告页脚中。

您可能还想取消报告的详细信息部分。

在此阶段,您现在应该可以预览结果了。