SELECT * FROM
( SELECT
e.*,
ROW_NUMBER() OVER (partition by emp_id order by effective_date DESC) r
FROM
EMPLOYEE e)
WHERE r = 1;
上記は、すべての個別のemp_idに対して最大のeffective__Dateを持つレコードを取得します。
特定の日付のレコードを返すという2番目の要件は、次のクエリで満たす必要があります:
(「ステータスASC」-同じ日付の「リーバー」もある場合、「ジョイナー」ステータスの取得を処理します。)
SELECT * FROM
( SELECT
e.*,
ROW_NUMBER() OVER (partition by emp_id order by effective_date DESC, status ASC) r
FROM
EMPLOYEE e
WHERE effective_date <= '<your desired date>')
WHERE r=1;