尝试根据另一个字段的约束对公式字段求和

Trying to SUM a formula field based on constraints from another field

报告的一些背景: 这是一份针对在我们公司工作的员工的生产力报告。我们根据拜访客户的持续时间来确定他们的工作效率。我们的一些员工提供小组会议。他们向组内的每个客户收费,即使他们只提供例如一小时的服务,如果组中有 10 个人,他们也可以按 10 小时收费。我们通过服务代码确定他们提供的服务。

所以,我在这个公式中有两个字段,一个服务代码字段和一个持续时间字段。

duration 字段最初是数据库中的一个 STRING 字段,尽管它只提供数字数据,所以我将其更改为 numberVar。服务代码字段也是一个字符串字段,有时确实包含字符和数字。

我需要做的Crystal 报告要做的是求持续时间的总和。但是,如果服务代码是“1000”,则必须先将持续时间除以 3,然后再求和。这就是我被抓住的地方。

这是我的持续时间代码:

local numbervar num1;
If GroupName ({billing_tx_charge_detail.v_SERVICE_CODE})="1530" then 
    num1 := ToNumber({billing_tx_charge_detail.v_duration})/3
else num1 := ToNumber({billing_tx_charge_detail.v_duration})

然后我为求和做一个单独的公式,命名为 sumDuration:

Sum(@duration)

我收到无法汇总此字段的错误。找了两天Google发现Crystal不能汇总涉及常量的字段或公式。如果我简单地说:

local numbervar num1;
num1 := ToNumber({billing_tx_charge_detail.v_duration})

然后我可以总结@duration。我错过了什么?它必须是简单的东西,但我只是没有看到它。有没有办法创建一个自定义函数来完成我想要达到的目标?还是比这更简单?

有人建议创建一个 SQL 命令,以便在数据到达报告之前进行计算。我是一个 SQL 新手,所以我什至不知道从哪里开始。

如果您按服务代码分组并将上述公式放在页脚中,您将仅为组中的最后一条记录计算 {billing_tx_charge_detail.v_duration}。如果您打算使用公式并对结果求和并将结果放在服务代码页脚中,请尝试以下操作。 (基本上删除对组名的引用)

If {billing_tx_charge_detail.v_SERVICE_CODE}) = "1530" then 
ToNumber({billing_tx_charge_detail.v_duration})/3 else
ToNumber({billing_tx_charge_detail.v_duration})

您可以根据需要使用变量 (num1),但不需要。 您仍然可以使用您提到的第二个公式并将其放在组页脚 您可以将第一个公式放在详细信息部分,右键单击并在组页脚中插入摘要。如果您也需要总计,也可以放在报告页脚中。