执行 JDBC as400 组查询时出现错误:字符、标记或子句无效或缺失



我正在尝试用java对AS400执行查询,但收到以下错误。我相信这与分组有关,并且与为聚合列分配别名有关:

SUM( ILHRS ) AS "SumIlhrs"

我可能没有正确转义引号吗?我尝试了以下方法,但没有成功

SUM( ILHRS ) AS "SumIlhrs", ..,
SUM( ILHRS ) AS 'SumIlhrs', ...
SUM( ILHRS ), ...

查询已经过测试并正常工作。

String query = "SELECT ILER,PREN,SUM( ILHRS ) AS "SumIlhrs" FROM HRDBFA.PYPIL PYPIL, HRDBFA.PRPMS PRPMS WHERE PYPIL.ILEN = PRPMS.PREN AND ( ( ILFYR = 2013 "  +
" AND ILFMON = 9) AND PRGP IN( 'U55', '066', '088' )) GROUP BY ILER,PREN";

错误信息:

SQLException:字符、标记或子句无效或缺失。

任何帮助将不胜感激。

我不认为你需要转义双引号。 事实上,正如吉姆·加里森(Jim Garrison)所建议的那样,您根本不需要将分配的名称括起来的双引号。 尝试

"SELECT ILER,PREN,SUM( ILHRS ) AS SumIlhrs FROM...

编辑

DB2 on IBM i 有两种名称样式:System 和 SQL。 系统命名会SELECT ILER,PREN,SUM( ILHRS ) AS SumIlhrs FROM HRDBFA/PYPIL PYPIL, HRDBFA/PRPMS PRPMS WHERE PYPIL.ILEN = PRPMS.PREN AND ( ( ILFYR = 2013 AND ILFMON = 9) AND PRGP IN( 'U55', '066', '088' )) GROUP BY ILER,PREN我会惊讶JDBC驱动程序设置为系统命名,但这是可能的。

另一个想法:您只在一个地方使用相关名称。 要么完全删除相关名,要么使用适当的相关名限定每一列。 SELECT ILER,PREN,SUM( ILHRS ) AS SumIlhrs FROM HRDBFA/PYPIL, HRDBFA/PRPMS WHERE ILEN = PREN AND ( ( ILFYR = 2013 AND ILFMON = 9) AND PRGP IN( 'U55', '066', '088' )) GROUP BY ILER,PREN

相关内容

  • 没有找到相关文章

最新更新