Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Setzen Sie einen sich wiederholenden Wert auf 0, während Sie den ersten Wert unverändert lassen

Fügen Sie Ihrem SQL SOITEM."SOID" hinzu (wir prüfen, ob dies doppelt vorhanden ist), Sie erhalten ein Feld

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

Erstellen Sie eine Gruppe auf dem SOID

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

Erstellen Sie dann eine Variable Dieser Reset erfolgt mit der Gruppe, die das Auftreten von SOID zählt

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

Die Sequenz in der jrxml dieses Codes lautet

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

Diese Variable kann nun verwendet werden, um auszuwerten, ob Sie SOID dupliziert haben, es wird >1 sein bei Duplizierung SOID

Beispiel von textField die 0 anzeigen, wenn SOID dupliziert wird

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

An dem Tag, an dem Sie Ihren Bericht verbessern möchten, fügen Sie einfach einen groupHeader hinzu Band in Ihrer Gruppe und fügen Sie dann die TextFields in dieses Band ein