Mysql
 sql >> Database >  >> RDS >> Mysql

Impostare un valore ripetuto su 0 lasciando solo il primo valore

Aggiungi al tuo sql SOITEM."SOID" (verifichiamo se questo è duplicato), ottieni un campo

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

Crea un gruppo sul SOID

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

Quindi crea una variabile quel ripristino è con il gruppo che conta l'occorrenza di SOID

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

La sequenza nel jrxml di questo codice sarà

<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>

Questa variabile ora può essere utilizzata per valutare se hai duplicato SOID, sarà >1 quando duplicato SOID

Esempio di textField che visualizza 0 se duplicato SOID

<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>

Il giorno in cui desideri migliorare il tuo rapporto, aggiungi un groupHeader band nel tuo gruppo e poi inserisci textField in questa band