После некоторого исследования я нашел это: Получение значения предыдущей записи (для расчета в переменных и т. Д.)
Цитата из этой статьи:
Переменные увеличиваются в порядке их объявления, так что вы можете использовать этот порядок для отслеживания значения «предыдущих» записей.Вам нужны две переменные отчета: одна для хранения текущего значения, а другая для хранения предыдущего значения.Хитрость заключается в том, чтобы объявить переменную «предыдущее значение» перед переменной «текущее значение» и сделать для первой копии значение второй следующим образом:
<variable name="INITIAL" class="java.math.BigDecimal" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$V{AAA}]]></variableExpression>
<initialValueExpression><![CDATA[new BigDecimal(0)]]></initialValueExpression>
</variable>
<variable name="AAA" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$F{FieldA}]]></variableExpression>
</variable>
Конечно, есливы создаете вычисление для сравнения, тогда вам нужна третья переменная для вычисления разницы между ними:
<variable name="DELTA" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$V{AAA}-$V{INITIAL}]]></variableExpression>
</variable>
Из того, что я понимаю, вы хотите сделать следующее: что-то = balance2 - (баланс1 + сумма2).
Следующее должно работать для вас:
<variable name="PREVIOUS" class="java.math.BigDecimal" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$V{CURRENT}]]></variableExpression>
<initialValueExpression><![CDATA[new BigDecimal(0)]]></initialValueExpression>
</variable>
<variable name="CURRENT" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$F{BALANCE}]]></variableExpression>
</variable>
<variable name="SOMETHING" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$F{BALANCE}-($V{PREVIOUS}+$F{AMOUNT})]]></variableExpression>
</variable>