0
예기치 않은 결과를 반환하는 매우 간단한 하위 쿼리를 MS SQL에 작성하고 있습니다. 내가 반환하려고하는 것은 한 기간에 존재하지만 다른 기간에는 존재하지 않는 acct 번호의 목록입니다. 내 초기 쿼리 (아래에 붙여 넣기)가 예기치 않은 0 행을 반환했습니다. 내가 서브 쿼리에 로직을 하나 개의 여분의 라인을 추가하고 예상 결과가 나에게 반환 실행할 때 이상한 결과를 반환하는 SQL 하위 쿼리
select
name1.acct
from
sym.dbo.name as name1
where
name1.processdate = 20171130
and name1.type = 0
and name1.acct not in
(
select
name2.acct
from
sym.dbo.name as name2
where
name2.type = 0
and name2.processdate = 20171031
)
그러나, 아래를 참조하십시오.
select
name1.acct
from
sym.dbo.name as name1
where
name1.processdate = 20171130
and name1.type = 0
and name1.acct not in
(
select
name2.acct
from
sym.dbo.name as name2
where
name2.type = 0
and name2.processdate = 20171031
and name2.acct <> '8888888'
)
처음에 나는 VARCHAR에 ACCT 번호를 변환 시도 (캐스팅 반대로 변환 사용) 동일한 결과를 int로 때문에이 데이터에 관련이있을 수 있습니다 입력 생각했다. 누군가가 왜 쿼리 하나가 0 결과를 반환하고 쿼리 2가 예상 된 결과를 반환했는지 설명 할 수 있습니까? 나는 특히 하위 쿼리와 함께,
NOT IN
를 사용하지 마십시오 마이크로 소프트 SQL 관리 Studio 2016
감사
당신이 두 쿼리에 대한 결과를보고 무엇을 검증하기 위해 샘플 데이터를 표시 할 수 있습니까? –
int 대신 datetime 또는 datetime 데이터 유형을 사용하는 것이 좋습니다. –