2016-01-11 1 views
1

Je crée une vue sélectionnée imbriquée à exécuter dans le rapport Jasper Netbeans de la base de données JAVA, et j'ai besoin de distinguer le groupé basé sur la même instruction ci-dessous par CASE injecté dans le select ou en utilisant if réalisable à l'intérieur JAVA DB ou de toute autre manière, enfin je veux utiliser record comme requête source pour exécuter jaspe signaler mon code comme suitJava DB et rapport jasper imbriqué sélectionnez

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
try { 
    String host1= "jdbc:derby://localhost:1527//home/mohamed/java- 
    progs/SPaccounting/accountsdb/accountsdb;create=true"; 
    String uName1="rootuser"; 
    String uPass1="1234a1234b"; 
    con1=DriverManager.getConnection(host1,uName1 ,uPass1); 
    String sql1="select sum(journal_amount) AS DR ,0 as CR, journal_crname AS 
    ACCNAME FROM JOURNAL 
    GROUP BY journal_CRNAME UNION select 0 AS DR,sum(journal_amount) AS CR, 
    journal_dbname AS ACCNAME FROM JOURNAL 
    GROUP BY journal_DRNAME order by ACCNAME 
    "; 
    JasperFillManager.fillReport(jasperReport,param1,connect); //add param  
    if required  
    String jrxmlFileName = "/home/mohamed/java-progs/accounting syst em/  
    JavaAaccountingsys/src/report1.jrxml"; 
    JasperDesign jasperDesign = JRXmlLoader.load(jrxmlFileName); 


    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, con1); 
    JasperViewer.viewReport(jasperPrint); 
    } catch (JRException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 
} 
} 

La sortie est:

ACCNAME  DR  CR 
-------- ---- ----- 
CASH   1,200 0 
AMRO BANK 0  500 
CASH   0  600 
AMRO BANK 700  0 

Je veux distincte et somme ci-dessus et réduire la dette DR de crédit CR et obtenir le résultat que le rapport suivant:

ACCNAME  DR  CR 
-------- ---- ----- 
CASH   600  0 
AMRO BANK 200  0 

S'il vous plaît aider à corriger l'instruction select

+0

Je ne comprends pas comment CASH 1200-600 = 100? –

+0

vous avez raison monsieur, je vais réviser Cash devrait être 600 –

+0

@Petter Oui cela résolu depuis 12 janvier maintenant en dehors de mes compétences en histoire merci pour les efforts –

Répondre

2

oui j'ai obtenu l'instruction select correcte SO, groupant la sortie dans un package imbriqué ajoutant ci-dessous instruction select les rapports de travail bien puis juste créer une sous-requête pour obtenir la dernière étape

SELECT ACCNAME, 
CASE WHEN SUM(CREDIT - DEBT) < 0 THEN - SUM(CREDIT - DEBT) 
ELSE 0 
END DEBT, 
    CASE WHEN SUM(CREDIT - DEBT) > 0 THEN SUM(CREDIT - DEBT) 
     ELSE 0 
    END CREDIT 
FROM (......) myTable 
GROUP BY ACCNAME ; 

Ainsi on m'a obtenu le droit chemin.