2017-03-06 16 views
0

私は各個人の最新のタイムスタンプと一致するssnと電子メールを取得する必要があります。つまり、それぞれの人がタイムスタンプの異なる多数の電子メールを持つことができます。これは私の代わりに3の1つの結果だけを与える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文以上あるはずです。 –