gpt4 book ai didi

coldfusion - 在 QoQ 中使用求和函数时出现意外错误

转载 作者:行者123 更新时间:2023-12-05 02:31:19 26 4
gpt4 key购买 nike

在尝试运行以下代码时

<cfquery name="Lev1CatTotal" dbtype="query">
SELECT
SUM(AMOUNT) AS TOTAL
FROM
ChartData
</cfquery>

这是生成的错误消息:

Query Of Queries 运行时错误。聚合函数 [SUM(expression)] 不能对 [JAVA_OBJECT] 类型的操作数进行运算

此代码在汇总较小的金额时运行良好。但是,这些是我汇总的表格中的数量。这个特定的查询总计超过 $5.7B。

<表类="s-表"><头>金额FISCAL_YRGOV_LEVEL1_CAT<正文>979241575.142019服务收费97218277.182019向其他政府收费233197655.522019联邦援助329567996.812019其他地方收入86957092.752019其他非属性(property)税158997846.752019其他不动产税项目371012673.892019其他来源346575244.012019债务 yield 1145011131.992019不动产税和评估945308275.552019销售和使用税921087680.042019国家援助107357596.202019属性(property)的使用和出售

为了继续前进,作为一种解决方法,我将其重新编码如下:

<cfset TOTAL = 0>
<cfloop query="ChartData">
<cfset TOTAL = precisionEvaluate(TOTAL + AMOUNT)>
</cfloop>

使用 precisionEvaluate() ,它将 TOTAL 转换为 BigDecimal 精度并避免错误。有人知道 QoQ 解决方案使用 sum() 函数将其转换为大的小数并避免使用此解决方法吗?谢谢。

最佳答案

非常感谢@BernhardDöbler 让我了解ChartData 的来源。由于这是继承的代码,因此我不得不对此进行调查。事实证明,ChartData 是使用以下代码行创建的。

<cfset ChartData = QueryNew("FISCAL_YR, GOV_LEVEL1_CAT, AMOUNT")>

我注意到,原始编码器没有为他的 QueryNew() 指定任何数据类型声明,所以我将代码行修改为

<cfset ChartData = QueryNew("FISCAL_YR, GOV_LEVEL1_CAT, AMOUNT", "VarChar, VarChar, Double")>

一旦我添加了 Double数据类型为 AMOUNT column,当​​我恢复到原来的代码时,它纠正了错误

<cfquery name="Lev1CatTotal" dbtype="query">
SELECT
SUM(AMOUNT) AS TOTAL
FROM
ChartData
</cfquery>

我能够删除使用 <cfloop> 执行聚合的解决方法代码.

关于coldfusion - 在 QoQ 中使用求和函数时出现意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71563572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com