Вот пример, основанный на том, что я понял.
SQL> -- sample data
SQL> with emp (emp_id, id, cdate, d_id) as
2 (select 100, 11111, date '2010-02-26', 123 from dual union all
3 select 100, 22222, date '2018-02-26', 456 from dual union all
4 --
5 select 200, 11122, date '2010-02-26', 123 from dual union all
6 select 200, 22211, date '2010-02-26', 456 from dual union all
7 --
8 select 300, 11133, null, 123 from dual union all
9 select 300, 22244, null, 456 from dual
10 ),
11 source (d_id) as
12 (select 123 from dual union all
13 select 456 from dual
14 )
15 -- query that, hopefully, returns result you need
16 select emp_id, id, cdate, d_id
17 from (select e.emp_id, e.id, e.cdate, d.d_id,
18 row_number() over (partition by e.emp_id order by e.cdate, d.d_id desc) rn
19 from emp e join source d on e.d_id = d.d_id
20 )
21 where rn = 1
22 order by emp_id;
EMP_ID ID CDATE D_ID
---------- ---------- ---------- ----------
100 11111 26/02/2010 123
200 22211 26/02/2010 456
300 22244 456
SQL>