Один из способов сделать это использовать запрос, который находит последнюю datevalidfrom для каждого идентификатора и использовать его в качестве производной таблицы, что вы присоединиться к другие таблицы с, что-то вроде этого:
select * from employee e
join employeeaddress ea on e.id = ea.id
join (select id, max(datevalidfrom) as max_date from employeeaddress group by id) ea2
on ea.id = ea2.id and ea.datevalidfrom = ea2.max_date
Присоединившись с максимальной (datevalidfrom) в производной таблице вы ограничить остальную часть запроса (что бы получить вам все строки) до самой последней.
И превратить его в вид:
create view employee_latest_address as
select e.id, e.name, ea.datevalidfrom, ea.addressline1, ea.addressline2, ea.postcode
from employee e
join employeeaddress ea on e.id = ea.id
join (select id, max(datevalidfrom) max_date from employeeaddress group by id) ea2
on ea.id = ea2.id and ea.datevalidfrom = ea2.max_date
К сожалению, неправильный псевдоним. Нет необходимости в дополнительных объединениях, этого достаточно –
Спасибо, отлично. –