简体   繁体   English

为什么我的查询失败,SQLCODE = -420?

[英]Why is my query failing with SQLCODE = -420?

Can I get some help with this?我能得到一些帮助吗? I'll copy the code as well as the error.我将复制代码以及错误。 I looked up the error code我查了一下错误代码

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

but I'm not understanding what doesn't meet the requirements of the function?但我不明白什么不符合功能要求? I'm just trying to pull these tables, rename ACH_ORIGINATION.DESCRIPTION when it meets certain requirements, and then filter out the ones that don't meet the requirements.我只是想拉出这些表,在满足某些要求时重命名ACH_ORIGINATION.DESCRIPTION ,然后过滤掉不符合要求的表。 I also want to group by DESCRIPTION but I'd like to get this portion working first.我也想按描述分组,但我想先让这部分工作。

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'

Error:错误:

net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error executing SQL statement for : ACH32Origination32Report_TableDataset_1579792666108_134237 at com.jaspersoft.studio.editor.preview.view.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) Caused by: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error executing SQL statement for : ACH32Origination32Report_TableDataset_1579792666108_134237 at net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:809) at net.sf.jasperreports.components.table.fill.FillTableSubreport.prepareSubreport(FillTableSubreport.java:156) at net.sf. net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: 执行 SQL 语句时出错: ACH32Origination32Report_TableDataset_1579792666108_134237 at com.editord control.ReportControler.fillReport(ReportControler.java:466) 在 com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$18(ReportControler.java:441) 在 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.fill.JRFillSubreport.prepare(JFillSubreport.java:809.net.sf.jasperreports.engine.fill.JFillSubreport.prepare(JFillSubreport.java:809) 处执行 SQL 语句时出错:ACH32Origination32Report_TableDataset_1579792666108_134237 .prepareSubreport(FillTableSubreport.java:156) 在 net.sf。 jasperreports.components.table.fill.FillTable.prepare(FillTable.java:400) at net.sf.jasperreports.engine.fill.JRFillComponentElement.prepare(JRFillComponentElement.java:151) at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:332) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:384) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:358) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1102) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1065) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:329) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:159) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963) at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120) at java.lan jasperreports.components.table.fill.FillTable.prepare(FillTable.java:400) 在 net.sf.jasperreports.engine.fill.JFillComponentElement.prepare(JFillComponentElement.java:151) 在 net.sf.jasperreports.engine.fill。 JRFillElementContainer.prepareElements(JFillElementContainer.java:332) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:384) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JFillBand.java: 358) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummaryNoLastFooterSamePage(JRVerticalFiller.java:1102) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillSummary(JRVerticalFiller.java:1065) 在 net.jaspersreport .engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:329) 在 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.lan g.Thread.run(Unknown Source) Caused by: net.sf.jasperreports.engine.JRException: Error executing SQL statement for : ACH32Origination32Report_TableDataset_1579792666108_134237 at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1114) at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:691) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1314) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:931) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:873) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:665) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203) at g.Thread.run(Unknown Source) 引起:net.sf.jasperreports.engine.JRException:执行 SQL 语句时出错:ACH32Origination32Report_TableDataset_1579792666108_134237 at net.sf.jasperreports.engine.query.JRJdbcQueryExecuterJdbcreater.在 net.sf.jasperreports.engine.fill.JFillDataset.createQueryDatasource(JFillDataset.java:1114) 在 net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JFillDataset.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.JFillSubreport.fillSubreport(JFillSubreport.java:665) 在 net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) 在 net. sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ... 1 more Caused by: com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: 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) at com.ibm.db2.jcc.am.id.a(id.java:127) at com.ibm.db2.jcc.am.bo.b(bo.java:4101) at com.ibm.db2.jcc.am.bo.a(bo.java:4083) at com.ibm.db2.jcc.t4.cb.a(cb.java:835) at com.ibm.db2.jcc.t4.cb.n(cb.java:801) at com.ibm.db2.jcc.t4.cb.j(cb.java:253) at com.ibm.db2.jcc.t4.cb.d(cb.java:55) at com.ibm.db2.jcc.t4.qc(q.java:44) at com.ibm.db2.jcc.t4.sb.j(sb.java:147) at com.ibm.db2.jcc.am.no.kb(no.java:2112) at com.ibm.db2.jcc.am.oo.b(oo.java:4407) at com.ibm.db2.jcc.am.oo.fc(oo.java:743) at com.ibm.db2.jcc.am.oo.executeQuery(oo.java:713) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:233) ... 11 mor java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ... 1 more 引起:com.ibm.db2.jcc.am.SqlDataException: DB2 SQL 错误:SQLCODE=-420、SQLSTATE=22018、SQLERRMC=BOOLEAN、DRIVER=4.13.127 在 com.ibm.db2.jcc.am.id.a(id.java:669) 在 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 月e电子

Per comments, fix the CASE expression like this:根据评论,像这样修复 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

Actually, it's better to post a new question, if your original problem is resolved, and now you have a new problem...其实,如果你原来的问题解决了,现在又出现了新问题,最好再发一个新问题……
Multiple problems with GROUP BY . GROUP BY存在多个问题。 You may run the query below to play with expressions.您可以运行下面的查询来使用表达式。

1) You must use some aggregate function on a column which is not presented in the GROUP BY list, but used in the SELECT list. 1) 您必须在未出现在GROUP BY列表中但在SELECT列表中使用的列上使用某些聚合函数。 If you uncomment the 1-st line commented out, and comment out the next line (with MAX function), you get SQLCODE=-119.如果取消注释第一行的注释,并注释掉下一行(使用MAX函数),则会得到 SQLCODE=-119。

2) Unanticipated / wrong expression in the GROUP BY clause. 2) GROUP BY子句中的意外/错误表达。
You should use the same case expression in the group by clause, and not the original DESCRIPTION column.您应该在group by子句中使用相同的case表达式,而不是原始的DESCRIPTION列。 If you uncomment commented out --DESCRIPTION line and comment out the CASE expression in the GROUP BY list, you may "suddenly" realize, that you get 2 groups with the same value in the DESCRIPTION column.如果您取消注释掉的--DESCRIPTION行并注释掉GROUP BY列表中的CASE表达式,您可能会“突然”意识到,您会在DESCRIPTION列中得到 2 个具有相同值的组。 This is because of you group by the original value in DESCRIPTION first and process the group value in the CASE expression afterwards.这是因为您首先按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
;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM