2014-10-10 2 views
-1
select * from New_tr 
where **(PeopleSoftID,** TransDate,TransactionCode) not in 
(select PeopleSoftID,TransDate,TransactionCode from Old_tr) 

그것은 나에게 다음과 같은 오류 오류 보여줍니다 기존 테이블에 존재하지 않는 테이블에서 새 행 싶어 오전 : 오류의 원인이 될 수있는 어떤나는 두 테이블을 비교하고

An expression of non-boolean type specified in a context where a condition is expected, near ','. 

를?

+0

PeopleSoftId 기본 키는 작업 할 때 여러 열을 사용할 수 없습니다. – SMA

+0

이 오류의 원인이되는 REAL sql을 넣으십시오. Oracle 11g에서 문제없이이 유형의 쿼리를 수행 할 수 있습니다. – qyb2zm302

답변

1

나는 MS SQL Server를 사용하고 있다는 오류 메시지에 따라 믿습니다. MS SQL Server는 IN 문에서 여러 열을 지원하지 않습니다. 이 문제를 해결하기 위해 null이있는 곳으로 왼쪽 결합으로 쉽게 다시 작성할 수 있습니다.

SELECT * FROM New_tr 
LEFT JOIN Old_tr ON (Old_tr.PeopleSoftID = New_tr.PeopleSoftID 
        and Old_tr.TransDate = New_tr.TransDate 
        and Old_tr.TransactionCode = New_tr.TransactionCode) 
where Old_tr.PeopleSoftID is null