데이터를 가져오고 전자 메일을 보내는 프로그램이 있습니다. 나는 smtp 이메일 로그 정보를 저장하는 또 다른 프로세스를 가지고있다.고유 키가없는 두 테이블에 결합하십시오.
예를 들어 사용자에게 정보를 제공 할 수 있도록보고하기 위해 이메일 로그를 사용합니다. 반송 등 ...
내가 가진 문제는 사용자가 이메일 정보의 다른 테이블에 저장된 계정 번호를 원한다는 것입니다. 즉, smtp 이메일 로그가 아닙니다.
현재 두 테이블을 함께 묶을 수있는 유일한 방법은 전자 메일 주소와 날짜입니다. 이것은 정확한 계좌 번호를 찾을 수있는 대부분의 시간입니다.
동일한 날에 같은 이메일 주소를 사용하는 다른 계정에서 3 개의 이메일을 보낼 수있는 곳이 문제입니다. 예 : 나는 두 개의 테이블을 조인 할 때
Account number Email Address Date
----------------------------------------------
1 [email protected] 9/12/2016
2 [email protected] 9/12/2016
3 [email protected] 9/12/2016
다음과 같다 : -
select l.event, l.[time], l.SendTime, l.Recipient, e.AccountNumber from emaillog l
OUTER APPLY
(SELECT TOP 1 AccountNumber from emailData e
where e.EmailAddress = l.Recipient and Convert(date, [DateEmailed]) = Convert(date, l.Time)
) as e
where Convert(date, l.Time) = '2016-12-09';
그것은 항상 내 이메일 테이블의 첫 번째 레코드를 찾습니다 즉 내가
Account number Email Address Date
---------------------------------------------
1 [email protected] 9/12/2016
1 [email protected] 9/12/2016
1 [email protected] 9/12/2016
을 가지고 있기 때문에 이메일 주소와 날짜 시합.
정확한 계좌 번호를 다시받을 수있는 방법이 있습니까? 나는 이메일 로그에서 임시 테이블을 생성하는 SP를 작성하는 생각 못했다
는 다음 여러 항목을 발견 이메일 데이터 테이블에서 행 1의 계좌 번호의 로그 행은 1 같은 것을 말한다.
내가 SQL 트릭을 놓친 지 궁금하다.
정말로 사용하고있는 데이터베이스에 질문을 태그하십시오. –
나는 비 표준'에 따라'SQL-server' 태그를 추가 [..]'와'외부 apply' –
죄송합니다, 예는 SQL-서버 –