crystal report使用Maximum as Sum条件问题

时间:2011-06-02 11:54:15

标签: crystal-reports sum max

我遇到了sum函数的问题: 数据有一个日期时间列,我想得到谁的日期时间是最大的总和。而且还有其他组织条件。 所以我喜欢:

  1. 添加公式maxDatetime:Maximum({datetime},{groupcondition})
  2. 为和ValueToSum添加新公式:if({datetime} = {@maxDatetime})then value else 0
  3. 求和值,添加新公式totalValue:Sum({@ valueToSum},{groupcondition})
  4. 结果是总和无法处理,它说:'valueToSum不能被玷污'。

    我认为causor可能在步骤2中使用最大值作为条件。因为当使用1 = 1来替换条件时,没有问题。

    有人可以提供一些建议吗?

1 个答案:

答案 0 :(得分:1)

我们通常通过创建其他查询并将其链接到主数据来解决此类问题。由于Crystal Reports只对数据进行了两次传递 - 记录读取和聚合计算,因此无法轻松聚合已聚合的值。

另一种可能性是将'totalvalue'累积到变量中。像下一个可能有用(可能需要调整):

WhilePrintingRecords();
NumberVar totalvalue;
If ({datetime} = Maximum({datetime}, {groupcondition})) 
then totalvalue:=totalvalue+value 
else 0

此公式(显示totalvalue)需要放入组页脚:

WhilePrintingRecords();
NumberVar totalvalue

在组头中的某个位置,您需要另一个重置totalvalue:

WhilePrintingRecords();
NumberVar totalvalue:=0