背景/目的: 我正在创建一个包含 SQL 的冷融合文档,用于从我公司的数据库中获取值。我正在查找我们团队中每个销售代表的转化率(已售出的许可证/注册)。每个 Rep 都有一个RegionalDirectorID
与用户绑定的 ID ( ) 以帮助跟踪。
问题/问题:问题是我们有其他工作人员在这里或那里销售许可证,例如我们的首席执行官、首席开发人员等。我们有 8 名销售代表,其中UserType
8 名。我正在使用另一个查询来选择这些用户类型,以区分来自其他人,这样我们的数据也不会混淆选择它们。
正如您在下面看到的,我正在使用 cfloop 循环getUsers
查询,特别是为了帮助该行(Users.RegionalDirectorID = #getUsers.UserID#)
打印出我们销售代表的所有 ID。 当我没有输入 cfloop 时,我只会看到一行显示一位销售代表。如果我有 cfloop,我会得到最后一个销售代表。
代码:
<cfset myQuery = QueryNew("ID, ConversionRate")>
<cfquery name="getUsers" datasource="#dsn#">
Select UserID FROM USERS WHERE
UserTypeID = 8
AND ISACTIVE = 1
</cfquery>
<cfquery name="getREGRD" datasource="#dsn#">
Select COUNT(DISTINCT(Users.UserID)) AS TOTALREG, RegionalDirectorID
FROM Users
WHERE UserTypeID = 3
<!--- <cfloop query="getUsers">
AND (Users.RegionalDirectorID = #getUsers.UserID#)
</cfloop>--->
AND (PARENTID IS NULL OR PARENTID = 0)
<cfif len(selectMonth)>
AND MONTH(Users.DateStamp) = #selectMonth#
<cfelse>
AND MONTH(Users.DateStamp) = #MONTH(NOW())#
</cfif>
GROUP BY Users.RegionalDirectorID
</cfquery>
<cfquery name="getREGRDSold" datasource="#dsn#">
Select COUNT(DISTINCT(UserTractLicense.UserID)) AS TOTALSOLD, Users.RegionalDirectorID
FROM Users, UserTractLicense
WHERE Users.UserID = UserTractLicense.UserID
AND Users.UserTypeID = 3 AND
(PARENTID IS NULL OR PARENTID = 0)
<cfif len(selectMonth)>
AND MONTH(Users.DateStamp) = #selectMonth#
<cfelse>
AND MONTH(Users.DateStamp) = #MONTH(NOW())#
</cfif>
GROUP BY Users.RegionalDirectorID
</cfquery>
<!---<cfset newRow = QueryAddRow(myQuery, #getREGRD.RecordCount#)>
<cfloop query="getREGRD">
<cfset QuerySetCell(myQuery, "ID", #getREGRD.RegionalDirectorID#, getREGRD.currentRow) />
</cfloop>
<cfloop query="getREGRDSold">
<cfset QuerySetCell(myQuery, "ConversionRate", #getREGRDSold.TOTALSOLD#/#getREGRD.TOTALREG#, getREGRDSold.currentRow) />
</cfloop>
--->
<!---<cfdump var="#myQuery#">--->
<cfdump var="#getREGRD#">
<cfdump var="#getREGRDSold#">
<cfoutput query="getREGRDSold">
#getREGRDSold.RegionalDirectorID#
</cfoutput>
cfloop 导致 newQuery 射出下面的错误。这就是为什么其中一些被注释掉的原因:
计算 QueryAddRow 函数时出错:QueryAddRow 函数的 Parameter> 2, 0 必须是正整数。
错误发生在第 70 行。
结果数据有一些没有 UserTypeID 为 8 的 RegionDirectorID,例如我想从查询结果中删除的 NULL 单元格。