Railo Query of Query返回错误的结果

Gra*_*ntU 5 coldfusion railo qoq

我正在运行以下两个语句:

首先是A)它做了它需要做和工作的事情:

SELECT
  itemColumn
 ,valueColumn
 ,label
 FROM
 rstCombinedChartData

 UNION ALL

 SELECT
 itemColumn
 ,CAST(valueColumn AS INTEGER) AS valueColumn
 ,label
 FROM
 rstChartData  
Run Code Online (Sandbox Code Playgroud)

这给了我以下结果:

在此输入图像描述

接下来我需要获取这些结果并在这种情况下返回每个值的itemcolumn总数是和否

i.e.
Yes 200
No 400 
Run Code Online (Sandbox Code Playgroud)

B)这是我实现此目的的查询:

SELECT
itemColumn
,SUM(valueColumn) AS valueColumn
,label
FROM
rstCombinedChartData (this is above result set)
GROUP BY
label
,itemColumn
ORDER BY
label DESC
,itemColumn DESC
Run Code Online (Sandbox Code Playgroud)

但是,我得到以下不正确的结果:

在此输入图像描述

什么在这里与查询B进行它应该是yes = x和no = x,而是我得到错误和所有总数?

CF功能:

    <cffunction name="getAverageChartData" hint="I return the data required to render an average chart." returntype="array" output="false">
        <cfargument name="surveyList" hint="I am a record set of Surveys." required="true" type="query" />
        <cfargument name="filter" hint="I am the optional filter which is to be applied to all results." required="false" default="" type="string" />

        <cfset var local=structNew() />

        <cfset var rstChartData="" />
        <cfset var rstChartDataTotal="" />
        <cfset var rstCombinedChartData=queryNew("itemColumn,valueColumn,label","varchar,integer,varchar") />

        <cfset local.objQuestion=objQuestionService.get(arguments.surveyList.question_ID[1]) />
        <cfset local.intQuestionTypeID = local.objQuestion.getTypeID() />

        <cfset local.strSubQuestionList=local.objQuestion.getAnswer() />
        <cfset local.strPossibleAnswerList=local.objQuestion.getPossibleAnswer() />

        <cfset local.arrChartDataResult=arrayNew(1) />

<!--- loop over each school's survey --->
        <cfloop query="arguments.surveyList">
            <cfset local.arrChartData = getChartData(arguments.surveyList.survey_id, arguments.surveyList.question_id, arguments.filter) />

<!--- loop over each sub question and append (union) it to a running total --->
            <cfloop array="#local.arrChartData#" index="rstChartData">
                <cfquery name="rstCombinedChartData" dbtype="query">
                    SELECT
                         itemColumn
                        ,valueColumn
                        ,label
                    FROM
                        rstCombinedChartData

                    UNION ALL

                    SELECT
                         itemColumn
                        ,CAST(valueColumn AS INTEGER) AS valueColumn
                        ,label
                    FROM
                        rstChartData
                </cfquery>
            </cfloop>
        </cfloop>


<!--- get the totals for each itemColumn --->
            <cfquery name="rstChartDataTotal" dbtype="query">
                SELECT
                     itemColumn
                    ,SUM(valueColumn) AS valueColumn
                    ,label
                FROM
                    rstCombinedChartData
                GROUP BY
                     label
                    ,itemColumn
                ORDER BY
                     label DESC
                    ,itemColumn DESC
            </cfquery>
Run Code Online (Sandbox Code Playgroud)

好的 - 重大更新

我不明白为什么,但我错误地添加了这一行:

<cfset querySetCell(rstCombinedChartData, "itemColumn", "1") />
Run Code Online (Sandbox Code Playgroud)

突然,查询开始在Railo中运行!好了,我有一个额外的结果,没有意义"1"但WTF!似乎Railo并不喜欢所有的肯定,没有任何答案我把其他东西放入混合中并且它开始正确地再次正确地应对它.

有谁知道这里发生了什么?我已经厌倦了在sql中作为varchar进行转换,但这不仅仅在CF级别上有效.

在此输入图像描述

如果我拿出这条线:

<cfset querySetCell(rstCombinedChartData, "itemColumn", "1") />
Run Code Online (Sandbox Code Playgroud)

它可以追溯到:

在此输入图像描述

nki*_*nki 0

尝试这个查询 -

SELECT UNIQUE itemColumn
      , SUM( SELECT valueColumn 
             FROM   rstCombinedChartData 
             WHERE itemColumn = "yes") as YES
      , SUM ( SELECT valueColumn 
             FROM   rstCombinedChartData 
             WHERE  itemColumn = "no") as NO
      , label;
Run Code Online (Sandbox Code Playgroud)