Условная сумма (переменная) - PullRequest
2 голосов
/ 17 марта 2011

Отчет в iReport (4.0.1) с различными полями включает в себя: $F{value} (целое число) и $F{created_at}.

Я бы хотел вычислить переменные, которые дали бы:

  1. сумма $F{value}, когда $F{created_at} раньше заданной даты
  2. сумма $F{value}, когда $F{created_at} после указанной даты

Есть идеи, как это можно сделать?

Ответы [ 2 ]

7 голосов
/ 17 марта 2011

Для этого вам нужно будет использовать две разные переменные.Для ваших переменных используйте что-то вроде этого в «Выражении переменной».Класс Date также имеет функцию after ().Если выражение имеет значение true, будет добавлено $ F {значение}, в противном случае будет добавлено 0.

$ F {creation_at} .before ($ P {GivenDate})?$ F {value}: 0

Чтобы использовать переменную для суммирования, необходимо изменить тип вычисления на «Сумма».Тип сброса по умолчанию, report будет суммировать значения по всему отчету.Другие типы сброса работают одинаково только для разных разделов отчета (столбец, страница или группа).

Вот XML для случая «до»:

<variable name="sumValueCreatedBefore" class="java.lang.Integer" calculation="Sum"> <variableExpression><![CDATA[F{created_at}.before($P{givenDate}) ? $F{value} : 0]]></variableExpression> </variable>

0 голосов
/ 13 июля 2011

для этого есть другое решение: запишите подзапрос в выбранной статистике

подобно

Выберите (выберите сумму (имя поля) из имени таблицы, где указана дата) в качестве aftersum

из таблицы, где условия

...