sql >> Databasteknik >  >> RDS >> Mysql

Ställ in ett repeterande värde till 0 medan det första värdet lämnas ifred

Lägg till SOITEM."SOID" i din sql (vi kollar om detta är duplicerat), du får ett fält

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

Skapa en gruppSOID

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

Skapa sedan en variabel den återställningen är med gruppen som räknar förekomsten av SOID

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

Sekvensen i jrxml för denna kod kommer att vara

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

Denna variabel kan nu användas för att utvärdera om du har duplicerat SOID, det blir >1 när duplicerad SOID

Exempel av textField som visar 0 om duplicerad 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>

Den dag du vill förbättra din rapport lägger du bara till en groupHeader band i din grupp och lägg sedan textfälten i detta band




  1. Hur man återställer databasen dubbelkodad av mysqldump

  2. Finns det något sätt att "lyssna" efter en databashändelse och uppdatera en sida i realtid?

  3. SQL Server - Bästa sättet att få identiteten för den infogade raden?

  4. MySQL välj rader från exakt 7 dagar sedan