2017-12-15 15 views

답변

1

당신이 FpsPmtOrderRQ 테이블에서 REFERENCA 열에서 어떤 NULL 값이있는 경우 다음 NOT IN 절은 예상대로 작동하지 않습니다 - (the reason why)

해결책은에 의해 반환 된 결과에서 NULL 값을 제거하는 것입니다 subselect.

SELECT COUNT(*) 
FROM i1450 j 
WHERE i.BROJ NOT IN (SELECT REFERENCA FROM FpsPmtOrderRQ WHERE REFERENCA IS NOT NULL) 
+0

값이 'NULL'인 'BROJ'의 첫 번째 테이블에서 레코드를 집계합니까? – nikname

1

하위 쿼리가 null 값을 반환하면 IN이 true가 아닙니다. 대신 NOT EXISTS을 수행하십시오.

select count(*) 
from i1450 i 
where not exists (select 1 from FpsPmtOrderRQ f 
        where i.broj = f.REFERENCA) 
1

null을 처리하기 위해 필드를 병합해야한다고 생각합니다.

where coalesce(I.BROJ,'n/a') not in (select coalesce(REFERENCA,'') 

또는 이와 유사한, 당신은 널 (null)을 제외하고, 적절한 수를 반환 : 당신이 이렇게함으로써 0 을받을 이유는 아마이다.

+0

단순히 null 행을 건너 뛰는 것이 좋습니다. (라두의 대답처럼) – jarlh