jasper-reports - total - sumar valores de una columna en ireport
¿Cómo sumar todos los valores en una columna en Jaspersoft iReport Designer? (2)
Es bastante fácil resolver tu tarea. Debería crear y usar una nueva variable para sumar los valores de la columna "Pago médico" .
En su caso la variable puede ser declarada así:
<variable name="total" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{payment}]]></variableExpression>
</variable>
- el tipo de cálculo es Suma ;
- el tipo de reinicio es Informe ;
- la expresión Variable es $ F {pago} , donde $ F {pago} es el nombre de un campo que contiene la suma ( Pago por médico ).
El ejemplo de trabajo.
Fuente de datos CSV:
doctor_id,payment A1,123 B1,223 C2,234 D3,678 D1,343
La plantilla:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ...>
<queryString>
<![CDATA[]]>
</queryString>
<field name="doctor_id" class="java.lang.String"/>
<field name="payment" class="java.lang.Integer"/>
<variable name="total" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{payment}]]></variableExpression>
</variable>
<columnHeader>
<band height="20" splitType="Stretch">
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<box leftPadding="10"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font size="10" isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[Doctor ID]]></text>
</staticText>
<staticText>
<reportElement x="100" y="0" width="100" height="20"/>
<box leftPadding="10"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font size="10" isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[Doctor Payment]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<box leftPadding="10"/>
<textElement/>
<textFieldExpression><![CDATA[$F{doctor_id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<box leftPadding="10"/>
<textElement/>
<textFieldExpression><![CDATA[$F{payment}]]></textFieldExpression>
</textField>
</band>
</detail>
<summary>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<box leftPadding="10"/>
<textElement>
<font isBold="true"/>
</textElement>
<text><![CDATA[Total]]></text>
</staticText>
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<box leftPadding="10"/>
<textElement>
<font isBold="true" isItalic="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{total}]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
El resultado será:
Puedes encontrar mucha información en la Guía de JasperReports Ultimate .
Tengo un informe similar en Jaspersoft iReport Designer, pero no puedo averiguar cómo sumar todos los valores presentes en la columna vertical "Doctor Payment" para obtener un total de "1601". La longitud de estas columnas es variable (es decir, ninguna de las filas varía según el tamaño de la base de datos y su frecuencia de actualización).
¿Hay alguna variable como $V{COLUMN_COUNT}
(en realidad no da filas, aquí 5), que da la suma de todos los valores en una columna? Si no, ¿cómo hacer la suma ?
Doctor ID Doctor Payment
A1 123
B1 223
C2 234
D3 678
D1 343
Total 1601
iReporta campos personalizados para columnas (suma, promedio, etc.)
Haga clic derecho sobre las variables y haga clic en Crear variable
Haga clic en la nueva variable
a. Observe las propiedades a la derecha.
Renombra la variable en consecuencia
Cambie el nombre de la clase de valor al tipo de datos correcto
a. Puedes buscar haciendo clic en los 3 puntos.
Seleccione el tipo de cálculo correcto
Cambiar la expresion
a. Haga clic en el pequeño icono
segundo. Seleccione la columna que está buscando para hacer el cálculo
do. Haga clic en finalizar
Establecer la expresión de valor inicial a 0
Establecer el tipo de incremento en ninguno
- Deje en blanco el Incrementer Factory Class Name
Establecer el tipo de restablecimiento (por lo general informe)
Arrastre un nuevo campo de texto a la etapa (generalmente en el último pie de página o pie de columna)
- Haga doble clic en el nuevo campo de texto.
- Borrar la expresión "Campo de texto"
Seleccione la nueva variable
Haga clic en finalizar
- Ponga el nuevo texto en una posición deseable