尝试根据来自另一个字段

时间:2016-02-12 17:35:43

标签: sql crystal-reports crystal-reports-2011 crystal-reports-formulas

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

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

持续时间字段最初是数据库中的STRING字段,即使它只提供数字数据,因此我将其更改为numberVar。服务代码字段也是字符串字段,有时它包含字符和数字。

我需要Crystal Reports做的是获取持续时间的总和。但是,如果服务代码是“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新手,所以我不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

If you are grouping by Service Code and placing the above formula in the footer you will only be computing {billing_tx_charge_detail.v_duration} for the last record in the group. If you are intending to use the formula and sum the results and place the results in the Service Code footer try the following. (basically remove the reference to group name)

<a href="www.google.com" target="_blank">Link</a>

You can use variables (num1) if you want to but they are not needed. You can still use the second formula you referred to and place in the group footer OR you can place the first formula in details section, right click and insert a summary to the group footer. You can also place in the report footer if you need it to total there as well.