2017-03-06 133 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

試試這個。它簡單靈活,根據每個人的最新時間戳獲取記錄

select ssn, email 
from table1 a 
where timestamp = (Select max(timestamp) from table1 where ssn = a.ssn) 
+0

只有代碼的答案是低質量和候選人刪除,至少應該有1或2個句子來解釋你如何回答這個問題,以及如何回答這個問題。 –