ColdFusion 在不使用 SQL 的情况下计算数量



我试图在不使用SQL count()代码的情况下计算金额 有没有办法通过 ColdFusion 提取包括数量在内的结果?

Select test
From ......
Where .....

<Cfif not test.RecordCount>
No records found
</Cfif>
<cfoutput query="test">#amount#</cfoutput>

It should display like this
TEST      CountOutput 
TEST A:   22
TEST B:   32
TEST B:    1
TEST C:   23

(来自评论...

为什么不能为此使用 SQL?除非有正当理由不能使用 COUNT,否则它是迄今为止最简单的聚合方法。您无需知道数据库表中的特定值即可执行 COUNT。只需做:

SELECT column, count(*) AS someAlias 
FROM   tableName 
GROUP BY column 

是的,可以在 ColdFusion 代码中执行相同的操作,但同样,除非有特定原因,否则使用 SQL 会更有效。

<cfset data = {} />
<cfset names = {} />
<cfloop query="test">
<cfif not structKeyExists(data, test.name)>
<cfset data[test.name] = 0 />
<!--- if you need to preserve original case of name --->
<cfset names[test.name] = test.name />
</cfif>
<cfset data[test.name] += 1 />
</cfloop>
<cfoutput>
<cfloop collection="#data#" item="key">
#names[key]#: #data[key]#<br />
</cfloop>
</cfloop>

要在不使用 SQL 的情况下获取总数,请使用

查询变量。记录计数

根据 SQL 查询中使用的条件,它将为您提供计数。

例如

<cfquery name="test">
SELECT * FROM database WHERE name=testA
</cfquery>
<cfdump var="#test.RECORDCOUNT#" />

在函数中使用它,调用它并将返回值存储在堆栈或数组中。

强烈建议您使用SQL Count((。我无法想象为什么要在 CFLoop 或 CFOutput 中执行此操作,但如果您使用 Group 属性并以这种方式计算每一行,这是可能的。

您是否知道,在对SQL服务器执行CFQuery以获取所有这些详细记录后,您可以运行"查询查询"来汇总SQL数据。这篇文章似乎解释了它: https://www.quackit.com/coldfusion/tutorial/coldfusion_query_of_queries.cfm

相关内容