Java DB 和 jasper 报告嵌套 select
Java DB and jasper report nested select
我在来自 JAVA DB 的 Jasper Netbeans 报告中创建嵌套 select 视图为 运行,并且需要通过 [= 根据以下相同语句区分分组15=] 注入 select 或使用 if
在 JAVA 数据库或任何其他方式中是可行的,最后我想使用记录集作为源查询到 运行 jasper 报告我的代码如下
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();
}
}
输出为:
ACCNAME DR CR
-------- ---- -----
CASH 1,200 0
AMRO BANK 0 500
CASH 0 600
AMRO BANK 700 0
我想对上面进行区分和求和,并从信贷 CR
中削减债务 DR
并得到如下报告的结果:
ACCNAME DR CR
-------- ---- -----
CASH 600 0
AMRO BANK 200 0
请协助更正select声明
是的,我在 SO 中得到了正确的 select 语句,将输出分组在一个嵌套包中,在 select 语句下方添加报告工作正常
然后只需创建一个子查询即可获得最后一步
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 ;
所以我走对了。
我在来自 JAVA DB 的 Jasper Netbeans 报告中创建嵌套 select 视图为 运行,并且需要通过 [= 根据以下相同语句区分分组15=] 注入 select 或使用 if
在 JAVA 数据库或任何其他方式中是可行的,最后我想使用记录集作为源查询到 运行 jasper 报告我的代码如下
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();
}
}
输出为:
ACCNAME DR CR
-------- ---- -----
CASH 1,200 0
AMRO BANK 0 500
CASH 0 600
AMRO BANK 700 0
我想对上面进行区分和求和,并从信贷 CR
中削减债务 DR
并得到如下报告的结果:
ACCNAME DR CR
-------- ---- -----
CASH 600 0
AMRO BANK 200 0
请协助更正select声明
是的,我在 SO 中得到了正确的 select 语句,将输出分组在一个嵌套包中,在 select 语句下方添加报告工作正常 然后只需创建一个子查询即可获得最后一步
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 ;
所以我走对了。