2017-03-06 1 views
0

각 사람마다 다른 타임 스탬프가있는 많은 전자 메일을 가질 수있는 최신 타임 스탬프와 일치하는 ssn 및 전자 메일을 가져와야합니다. 가장 최근에 받아야합니다. 이것은 나에게 대신 세의 한 결과를 제공DB2의 SQL SELECT 쿼리

SELECT SSN, EMAIL 
FROM TABLE1 
WHERE TIMESTAMP IN (SELECT TIMESTAMP 
        FROM TABLE1 
        WHERE SSN IN ('111111111', '222222222', '333333333')  
        ORDER BY TIMESTAMP DESC FETCH FIRST ROW ONLY) 

: 여기

는 내가 지금까지 가지고있는 것입니다. "FOR"문을 찾으려고했지만 저장 프로 시저에서만 사용 된 것 같습니다. 아마, 내 이슈에 대한 문제를 제기 할 수 있다면 매우 감사 할 것입니다. 모두에게 감사드립니다.

답변

2

창문 사용 방법은 어떻습니까?

select t1.ssn, t1.email 
from (select t1.*, 
      row_number() over (partition by ssn order by timestamp desc) as seqnum 
     from table1 t1 
     where SSN in ('111111111', '222222222', '333333333') 
    ) t 
where seqnum = 1; 
+0

멋진 솔루션! row_number와 파티션 명령을 실제로 알지는 못했지만, 그 시간에 대해 알게되면 빠른 답장을 보내 주셔서 감사합니다! – Foxy

0

보십시오. 각 사람의 최신 타임 스탬프를 기반으로 레코드를 가져 오는 간단한 프로그램입니다.

+0

코드 만 대답하면 품질이 낮고 삭제 대상이됩니다. 질문에 대답하는 방법과 질문에 대한 대답을 설명하는 문장이 최소한 1 ~ 2 개 이상 있어야합니다. –