ORA-00933语法错误求助:SQL连接语句执行失败排查
解决ORA-00933:SQL命令未正确结束的问题
错误原因
你的SQL代码末尾存在多余的重复JOIN语句(附带混乱的行号),Oracle执行到分号后仍遇到未预期的SQL语法,因此抛出ORA-00933错误。
修正后的SQL代码
SELECT i.bill_cyc_cd, i.store_cd, SUM(CASE WHEN p.past_due_tp# > 0 AND p.past_due_tp# <= 4 THEN i.sch_pmt_amt ELSE 0 END) AS sch_pmt_amt, c.fname, c.lname, c.home_phone FROM inst_cntr i JOIN cntr$past_due_tp p ON i.cust_cd = p.cust_cd AND i.cntr_cd = p.cntr_cd JOIN cust c ON i.cust_cd = c.cust_cd WHERE i.bill_cyc_cd IN ('300', '150', '015', '030', '922', '921', '920') AND p.past_due_tp# > 0 AND p.past_due_tp# <= 4 GROUP BY i.bill_cyc_cd, i.store_cd, c.fname, c.lname, c.home_phone;
额外优化建议
原SQL中的EXISTS子查询完全冗余:你已经通过JOIN cntr$past_due_tp p关联了逾期表,并且在WHERE子句中已经过滤了p.past_due_tp#的范围,重复的EXISTS检查不会带来额外价值,反而会增加查询开销,直接删除即可。
内容的提问来源于stack exchange,提问作者GoldBaz
相关产品推荐
相关产品推荐

