Mysql
 sql >> Base de données >  >> RDS >> Mysql

Définissez une valeur répétitive sur 0 tout en laissant la première valeur seule

Ajoutez à votre sql SOITEM."SOID" (nous vérifions s'il y a doublon), vous obtenez un champ

<field name="SOID" class="java.lang.Integer"/>

Créer un groupe sur le SOID

<group name="SOID">
    <groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>

Créez ensuite une variable cette réinitialisation est avec le groupe comptant l'occurrence de SOID

<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
    <variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>

La séquence dans le jrxml de ce code sera

<field name="SOID" class="java.lang.Integer"/>
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
    <variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
<group name="SOID">
    <groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>

Cette variable peut maintenant être utilisée pour évaluer si vous avez un SOID dupliqué, ce sera >1 lorsqu'il est dupliqué SOID

Exemple de textField qui affichent 0 si SOID dupliqué

<textField pattern="###0">
    <reportElement x="143" y="0" width="105" height="20" uuid="a0e2ae10-906e-4d0f-aebd-30fc0c694aca">
    </reportElement>
    <textElement textAlignment="Right" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$V{SOID_Count}<=1?$F{SOITEM_UNITPRICE}:0]]></textFieldExpression>
</textField>

Le jour où vous souhaitez améliorer votre rapport, ajoutez simplement un groupHeader groupe dans votre groupe, puis mettez les textField dans ce groupe