0

我能得到一些帮助吗?我将复制代码以及错误。我查了错误代码

(DB2 SQL 错误:SQLCODE=-420,SQLSTATE=22018,SQLERRMC=BOOLEAN)

但我不明白什么不符合功能的要求?我只是想把这些表拉出来,当它满足某些要求时重命名ACH_ORIGINATION.DESCRIPTION,然后过滤掉那些不符合要求的。我也想按说明分组,但我想先让这部分工作。

SELECT
    ACH_ORIGINATION.COMPANY_SERIAL,
    ACH_ORIGINATION.NAME,
    ACH_ORIGINATION.AMOUNT,
    ACH_ORIGINATION.NEXT_POSTING_DATE,
    CASE ACH_ORIGINATION.DESCRIPTION
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%J & J%' THEN 'J & J Electric'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%DeCleene%' THEN 'DeCleene'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Arab%' THEN 'Arab'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Clifford%' THEN 'Clifford Signs'
        ELSE 'Nothing'
    END AS DESCRIPTION
FROM
    CORE.ACH_ORIGINATION AS ACH_ORIGINATION
WHERE
    ACH_ORIGINATION.NEXT_POSTING_DATE IS NOT NULL AND
    DESCRIPTION <> 'Nothing'

错误:

net.sf.jasperreports.engine.JRException:net.sf.jasperreports.engine.JRRuntimeException:net.sf.jasperreports.engine.JRException:在 com.jaspersoft.studio.editor.preview.view 执行 SQL 语句时出错:ACH32Origination32Report_TableDataset_1579792666108_134237。 control.ReportControler.fillReport(ReportControler.java:466) at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$18(ReportControler.java:441) at com.jaspersoft.studio.editor.preview.view .control.ReportControler$4.run(ReportControler.java:333) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 原因:net.sf.jasperreports.engine.JRRuntimeException:net. sf.jasperreports.engine.JRException:在 net.sf.jasperreports.engine 执行 SQL 语句时出错:ACH32Origination32Report_TableDataset_15797926666108_134237。fill.JRFillSubreport.prepare(JRFillSubreport.java:809) 在 net.sf.jasperreports.components.table.fill.FillTableSubreport.prepareSubreport(FillTableSubreport.java:156) 在 net.sf.jasperreports.components.table.fill.FillTable。在 net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:332) 的 net.sf.jasperreports.engine.fill.JRFillComponentElement.prepare(JRFillComponentElement.java:151) 准备(FillTable.java:400) net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:384) 在 net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:358) 在 net.sf.jasperreports.engine .fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1102) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1065) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:159) 在 net.sf.jasperreports .engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963) 在 net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120) 在 java.lang.Thread.run(未知来源)原因:net.sf.jasperreports.engine.JRException:执行 SQL 语句时出错:net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240) 在 net.sf.jasperreports.engine 的 ACH32Origination32Report_TableDataset_1579792666108_134237。 fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1114) 在 net.sf.jasperreports.engine.fill.JRFillDataset。initDatasource(JRFillDataset.java:691) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1314) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:931)在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:873) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:665) 在 net.sf.jasperreports.engine .fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java .util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ... 1 更多原因:com.ibm.db2.jcc.am.SqlDataException:DB2 SQL 错误:SQLCODE=-420,SQLSTATE=22018, SQLERRMC=BOOLEAN, DRIVER=4.13.127 at com.ibm.db2.jcc.am.id.a(id.java:669) at com.ibm.db2.jcc.am.id.a(id .java:60) 在 com.ibm.db2.jcc.am.id.a(id.java:127) 在 com.ibm.db2.jcc.am.bo.b(bo.java:4101) 在 com。 ibm.db2.jcc.am.bo.a(bo.java:4083) 在 com.ibm.db2.jcc.t4.cb.a(cb.java:835) 在 com.ibm.db2.jcc.t4。 cb.n(cb.java:801) 在 com.ibm.db2.jcc.t4.cb.j(cb.java:253) 在 com.ibm.db2.jcc.t4.cb.d(cb.java: 55) 在 com.ibm.db2.jcc.t4.qc(q.java:44) 在 com.ibm.db2.jcc.t4.sb.j(sb.java:147) 在 com.ibm.db2.jcc .am.no.kb(no.java:2112) 在 com.ibm.db2.jcc.am.oo.b(oo.java:4407) 在 com.ibm.db2.jcc.am.oo.fc(oo .java:743) 在 com.ibm.db2.jcc.am.oo.executeQuery(oo.java:713) 在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:233) ... 11 更多

4

2 回答 2

2

根据评论,像这样修复 CASE 表达式:

CASE    WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%J & J%' THEN 'J & J Electric'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%DeCleene%' THEN 'DeCleene'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Arab%' THEN 'Arab'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Clifford%' THEN 'Clifford Signs'
        ELSE 'Nothing'
END AS DESCRIPTION
于 2020-01-23T15:38:58.763 回答
0

实际上,最好发布一个新问题,如果您的原始问题已解决,现在您有一个新问题......
多个问题GROUP BY。您可以运行下面的查询来使用表达式。

GROUP BY1)您必须在列表中未显示但在列表中使用的列上使用一些聚合函数SELECT。如果取消注释已注释掉的第一行,并注释掉下一行(带有MAX函数),则会得到 SQLCODE=-119。

GROUP BY2)子句中出现意外/错误的表达。
您应该在子句中使用相同的case表达式group by,而不是原始DESCRIPTION列。如果您取消注释掉注释--DESCRIPTION行并注释掉列表CASE中的表达式GROUP BY,您可能会“突然”意识到,您在DESCRIPTION列中获得了 2 个具有相同值的组。这是因为您首先按原始值分组,然后在表达式DESCRIPTION中处理组值。CASE

SELECT
    --ACH_ORIGINATION.NEXT_POSTING_DATE,
    MAX(ACH_ORIGINATION.NEXT_POSTING_DATE) AS NEXT_POSTING_DATE,
    CASE 
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%J & J%' THEN 'J & J Electric'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%DeCleene%' THEN 'DeCleene'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Arab%' THEN 'Arab'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Clifford%' THEN 'Clifford Signs'
        ELSE 'Nothing'
    END AS DESCRIPTION
, COUNT(1) CNT    
FROM 
(
VALUES 
  (CURRENT DATE - 1, 'Arab1') 
, (CURRENT DATE - 2, 'Arab2')  
) ACH_ORIGINATION (NEXT_POSTING_DATE, DESCRIPTION)
WHERE
    ACH_ORIGINATION.NEXT_POSTING_DATE IS NOT NULL AND
    DESCRIPTION <> 'Nothing'
GROUP BY 
--DESCRIPTION
    CASE 
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%J & J%' THEN 'J & J Electric'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%DeCleene%' THEN 'DeCleene'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Arab%' THEN 'Arab'
        WHEN ACH_ORIGINATION.DESCRIPTION LIKE '%Clifford%' THEN 'Clifford Signs'
        ELSE 'Nothing'
    END
;
于 2020-01-24T05:56:41.963 回答