更新 - 質問
自己結合を使用する以外に、テーブルから最大のレコードを選択するクエリをよりコンパクトに作成する方法はありますか?
例として、次のスキーマを持つイベントのテーブルがあります。
EventID | EventType | Timestamp | Description
-----------+-----------+-----------+--------------
INT | VARCHAR | INT | VARCHAR
また、イベントの種類ごとに複数のレコードが含まれる場合があります。まあ言ってみれば:
1 | A | 100000 | 'First Event'
2 | A | 100005 | 'Second Event'
3 | B | 100009 | 'Third Event'
4 | A | 100009 | 'Fourth Event'
5 | B | 100010 | 'Fifth Event'
6 | B | 100030 | 'Sixth Event'
7 | A | 100030 | ' ... '
8 | C | 100030 | ' ... '
9 | C | 100050 | ' ... '
そして、各タイプの最新のイベント (イベント #6、#7、および #9) を知りたいとしましょう。次に、次のようなクエリを作成する必要があります。
SELECT EventID
, EventType
, Timestamp
, Description
FROM EventsTable T
INNER JOIN (SELECT EventType
, MAX(Timestamp)
FROM EventsTable TInner
GROUP BY EventType) TSelf
ON T.Timestamp = TSelf.Timestamp
AND T.EventType = TSelf.EventType
したがって、質問は次のようになります。理想的には JOIN に頼ることなく、同じクエリを表現するよりコンパクトな方法はありますか?