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

Indstil en gentagelsesværdi til 0, mens du lader den første værdi stå

Tilføj til din sql SOITEM."SOID" (vi tjekker om dette er duplikeret), får du et felt

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

Opret en gruppeSOID

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

Opret derefter en variabel denne nulstilling er med gruppen, der tæller forekomsten af ​​SOID

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

Sekvensen i jrxml af denne kode vil være

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

Denne variabel kan nu bruges til at evaluere, om du har duplikeret SOID, den vil være >1 når duplikeres SOID

Eksempel af textField der viser 0, hvis duplikeret 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 gerne vil forbedre din rapport, skal du blot tilføje en groupHeader bånd i din gruppe, og læg derefter tekstfelterne i dette bånd




  1. Vælg resultatsæt til en variabel, og brug derefter denne variabel i en opdatering senere i den samme lagrede procedure

  2. FROM_UNIXTIME() Eksempler – MySQL

  3. InnoDB vs. MyISAM indsæt forespørgselstid

  4. At lukke et streaming-resultatsæt (ved at bruge mysql jdbc) tager lang tid