3

この出力に特定の行のみを追加しようとしています。現在、この出力はすべての行を追加します。これは、最後の合計行に使用されます。

<cfoutput query="qrySummary">

#numberFormat(ArraySum(ListToArray(ValueList(qrySummary.secThreeCount))), ",")#

これは明らかにすべての SecThreeCount 値を合計しますが、そのリストから最後の 2 行を除外したい場合はどうすればよいでしょうか??

それは常温核融合で可能ですか?

(これが違いを生む場合)>>したがって、13行が返されます。最初の11行が必要で、最後の2行を除外します。

そのクエリの SQL リターンを制限してこれらの 2 行を除外できることはわかっていますが、記述するコードを減らして、物事を整理したいと考えていました。また、それが可能かどうかを学びます:)

前もって感謝します。

4

3 に答える 3

3

これらの 2 つの行が必要ない場合は、そもそもそれらを返すべきではないと思います。それが一番の答えでしょう。「しかし、書くコードを減らしたかった」というあなたの声明から、あなたは間違った場所最適化しています。

私はこのコードをテストしていたので、Leigh が私の下に来ましたが、これを使用した概念実証は次のsubList()とおりです。

numbers = queryNew("");
queryAddColumn(numbers, "id", "integer", [1,2,3,4,5,6]);
queryAddColumn(numbers, "maori", "varchar", ["tahi", "rua", "toru", "wha", "rima", "ono"]);

maori = listToArray(valueList(numbers.maori));
subset = maori.subList(2,5);

writeDump([numbers, subset]);

これは、要素を含む配列を返します["toru","wha","rima"]

于 2013-08-30T15:45:13.147 に答える
1

別のアプローチ。最後の 2 つの要素の値を合計したくないので、それらを配列から削除します。

<cfset values = ListToArray(ValueList(qrySummary.secThreeCount))>

<!--- delete the last element --->
<cfset arrayDeleteAt(values, arrayLen(values))>

<!--- delete the last element again --->
<cfset arrayDeleteAt(values, arrayLen(values))>

#numberFormat(ArraySum(values), ",")#

または、とにかくクエリをループしていることを考えると、合計を単純に追加することもできます (最後の行または最後から 2 番目の行にいる場合に気にしないように少しのロジックを使用します)。

于 2013-08-30T16:16:42.590 に答える