SQLBase 11.7查询各单元最新检验记录遇00905缺失右括号错误
SQLBase 11.7 查询每个单元最新检验记录的解决方案
针对你遇到的00905 PRS MRP Missing right parenthesis错误,核心原因是SQLBase 11.7不支持多列IN子查询语法,且对子查询中未命名的计算列解析存在兼容问题。以下是两种可行的替代方案:
方案1:关联子查询(兼容性最佳)
通过关联子查询直接判断当前行的检验日期是否为对应单元的最新日期,语法更适配SQLBase老版本:
SELECT Col1, Col2, Col3 FROM Insp_Header ih WHERE ih.insp_dt = ( SELECT MAX(insp_dt) FROM Insp_Header WHERE unit_id = ih.unit_id );
方案2:带列别名的连接查询(修正原写法)
原连接写法的问题在于子查询中的MAX(insp_dt)未指定列别名,SQLBase无法识别该列。给计算列添加别名后即可正常解析:
SELECT ih.Col1, ih.Col2, ih.Col3 FROM Insp_Header ih INNER JOIN ( SELECT unit_id, MAX(insp_dt) AS max_insp_dt FROM Insp_Header GROUP BY unit_id ) meh ON ih.unit_id = meh.unit_id AND ih.insp_dt = meh.max_insp_dt;
说明
- 如果同一单元存在多条同一最新日期的检验记录,两种方案都会返回所有符合条件的记录,若需唯一结果可额外添加区分列(如检验ID)到判断条件中。
- 关联子查询在数据量较小时性能稳定,连接查询在大表场景下可能更高效,可根据实际数据规模选择。
内容的提问来源于stack exchange,提问作者Travis Shands
相关产品推荐
相关产品推荐

