2016-03-04 168 views
0

我得到这个错误,当我试图做一个左外,在第7行加入左外连接错误

ERROR以下查询: ORA-00936:缺少表达

select s.FINAL_BSAL,s.EMP_No,p.ERN_DDCT_CATNO,p.AMOUNT,n.NO_PAY_AMOUNT, 
p.Pay_month,a.ARREARS_AMOUNT from salary_details s,pay_details p,Arrears a,No_Pay n 
where s.emp_no=p.emp_no 
and 
s.SAL_NO IN (SELECT MAX(SAL_NO) FROM SALARY_DETAILS group by EMP_NO) 
AND 
to_char(P.PAY_MONTH,'MM-YYYY') =to_char(n.NO_PAY_MONTH,'MM-YYYY') (+) 
AND 
to_char(P.PAY_MONTH,'MM-YYYY')=to_char(a.ARREARS_MONTH,'MM-YYYY') ; 

请帮助。

回答

2

问题在于与(+)安置:

相反的:

to_char(P.PAY_MONTH,'MM-YYYY') =to_char(n.NO_PAY_MONTH,'MM-YYYY') (+)

你应该做的:

to_char(P.PAY_MONTH,'MM-YYYY') =to_char(n.NO_PAY_MONTH (+),'MM-YYYY')

但是,如果我是你,我会用@ Walter_Ritzel的方法去使用ANSI JOIN语法。这和正确格式的SQL,以便它的可读性...

+0

不错的工作老板....谢谢 –

1

试试这个:

select s.FINAL_BSAL 
    ,s.EMP_No 
    ,p.ERN_DDCT_CATNO 
    ,p.AMOUNT 
    ,n.NO_PAY_AMOUNT 
    ,p.Pay_month 
    ,a.ARREARS_AMOUNT 
from salary_details s inner join pay_details p on s.emp_no = p.emp_no 
inner join Arrears a on to_char(P.PAY_MONTH,'MM-YYYY')= to_char(a.ARREARS_MONTH,'MM-YYYY') 
left outer join No_Pay n on to_char(P.PAY_MONTH,'MM-YYYY') = to_char(n.NO_PAY_MONTH,'MM-YYYY') 
where s.SAL_NO IN (SELECT MAX(SAL_NO) FROM SALARY_DETAILS group by EMP_NO); 
+0

不错的工作老板....出色的整理.... –