所以我必须根据其他一些列值输出查询列值。为此,我使用cfloop检查查询列中的每个值,然后设置值。我的代码如下所示:
<cfloop query="myQuery">
<cfif status EQ "ABC" OR status EQ "DEF">
<cfif trim(exitStatus) EQ ''>
<cfset col8val = #col8val#>
<cfelse>
<cfset col8val = #col8val# A>
</cfif>
</cfif>
</cfloop>
所以我想知道我应该使用什么来将结果存储在一个地方,这样我就不需要循环了,我想简单地在上面的cfloop之后转储我的结果集。我不能使用数组或结构,因为两者都需要额外的循环来获得结果。我也尝试在SQL中执行此操作,但我无法组合来自两个不同列的两个CASE语句。如果有人可以帮助解决这个问题,请告诉我。
答案 0 :(得分:2)
你可以从两个不同的栏目做一个案例陈述,但也许你不知道如何。我会进一步研究你正在使用的SQL的任何风格,看看它是如何完成的。在SQL Server中,您可以执行以下操作:
SELECT CASE WHEN status IN ('ABC', 'DEF') AND COALESCE(exitStatus,'') = ''THEN col8val
ELSE col8val + 'A'
END AS TheNewValue
FROM TableName
WHERE ....
另一种选择是物理编辑查询对象,Ben的这篇文章解释了如何做到这一点:Ask Ben: Updating Columns In An Existing ColdFusion Query Object。
你的确切问题:
所以我想知道我应该用什么来将我的结果存储在一个地方 这样我就不必循环,我想简单地转储我的结果 在上面的cfloop之后设置。我不能使用数组或结构,因为 两者都需要额外的循环来获得结果。
我不完全理解你的问题。您希望将结果存储在一个地方&#34;但是你不想使用数组或结构。那么,如果你不能使用数组或结构,你认为你怎么能存储不是原始的数据呢?目前还不清楚您打算如何使用这些数据。其他人编写的一些函数可以非常有效地将查询转换为数组或结构或列表等。但如果您需要检查和更改任何数据,您唯一的选择是编写循环,使用某人&# 39; s函数并修改它以执行更改数据或更改SQL所需的检查。您可以通过QoQ获得创意,但老实说,如果您正在研究它,您可以在原始查询中执行此操作。