私はIDごとに最高以降でのみ行を選択しようとしているサブクエリを使用せずに最大シーケンスでローのみを選択するにはどうすればよいですか?
ID | Seq | Age
-------------------
A 1 20
A 2 30
B 1 25
B 2 32
B 3 44
B 4 48
C 1 11
これは
SELECT ID, Age
FROM Persons a
WHERE Seq = (SELECT MAX(Seq) FROM Persons b WHERE a.ID = b.ID)
を動作しているように見えます。しかし、これは最善の方法、唯一の方法ですか?私はサブクエリを使用するのが好きではありませんし、何かを使うことができると思いますが、それは何かを忘れてしまいます。何か案が?
どのようなrdbmsを使用していますか? –
主にSQL Serverですが、オラクルと互換性があればそれは最高です – jenswirf
私の 'ROW_NUMBER'アプローチはSQl-FiddleでテストしたようにOracleでも動作します。私の答えの中のリンクを見てください。 –