전화가있는 임시 테이블을 로그 테이블과 대조해야합니다.존재하지 않을 수있는 정보가있는 절 절
임시 테이블
- 전화 VARCHAR (20)
로그 테이블
- 전화 VARCHAR (20)
- [상태] VARCHAR (20)
- CHANGEDATE 날짜 시간
로그 테이블 데이터는
- 로그 테이블의 모든 전화는 항상
- 을 "추가"상태가됩니다하지만 모든 전화는 또한 "의 상태가됩니다 제거 "
예 :
,전화 상태 CHANGEDATE
3054444444 추가 2012년 10월 12일
- 4445556666 추가 2012년 10월 12일
- 3,054,444,444 제거 2012년 11월 12일
where 절은 섹션이 두 개이며 모두 true 여야합니다.
는1 Temp.Phone 가입 할 때
- @date 커 또는 여기
인
2. 가입은 다음 사항을 확인해야합니다. 1,
- @date는
- log.Status = '삭제'
- 로그 log.ChangeDate 보다 작다.상태 = '제거'존재하지 않을 수도 있습니다, 그래서 그 다음의 진정한 존재하는지 확인해야하고, 존재하지 않는 경우, 다음 무시하거나 진정한를 생성 어떻게 든
SQL 문
SELECT *
FROM #temp t
JOIN log l
ON t.Phone = l.Phone
WHERE (l.ChangeDate < = @Date AND l.Status = 'Added')
AND
(l.ChangeDate > @Date AND l.Status = 'Removed') --may not exist, but ALSO has to be true
두 번째 "and"를 "or"로 변경하면 Bob이 삼촌 일 수 있습니다. –
나는 .... 둘 다 사실이되어야한다. –