次の 2 つのステートメントを実行しています。
最初は A) で、必要なことを実行して機能します。
SELECT
itemColumn
,valueColumn
,label
FROM
rstCombinedChartData
UNION ALL
SELECT
itemColumn
,CAST(valueColumn AS INTEGER) AS valueColumn
,label
FROM
rstChartData
これにより、次の結果が得られます。
次に、これらの結果を取得し、各値の itemcolumn の合計を取得する必要があります。この場合は yes と no です。
i.e.
Yes 200
No 400
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
ただし、正しくない次の結果が得られます。
ここでクエリ B で何が起こっているのか、yes = x と no = x である必要があります。代わりに、false とすべての合計を取得していますか?
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>
OK - 主要な更新
理由はわかりませんが、誤って次の行を追加しました。
<cfset querySetCell(rstCombinedChartData, "itemColumn", "1") />
突然、Railo でクエリが機能するようになりました。さて、意味のない「1」以外の結果がもう 1 つありますが、WTF です! Railo はすべての yes, no の回答が気に入らないようです。何か他のものをミックスに入れると、varchar が本来あるべきように、再び正しく処理を開始します。
ここで何が起こっているか知っている人はいますか?SQLでvarcharとしてキャストするのにうんざりしていますが、これはCFレベルでのみ機能せず、何かが起こります。
私が行を取り出す場合:
<cfset querySetCell(rstCombinedChartData, "itemColumn", "1") />
次のように戻ります。