How to show multiple record if has top 1
Top is only giving you one record because you're asking for the top '1' row.  If you want all, just change it to: 

select (md2.table2) from table2 md2
where md2.EFFECTIVEDATE &lt; '2019-12-05'
and md2.key2 in (select key2 from table1)
order by EFFECTIVEDATE desc