У меня есть следующие таблицы:
create table employee(id int, name varchar(50), fname varchar(50));
create table rank (id int, name varchar(50));
create table promotion(id int, dt date, from_rank_id int, to_rank_id int, employee_id int,
constraint fk_pro_emp foreign key(employee_id) references employee(id),
constraint fk_pro_rank_f foreign key(from_rank_id) references rank(id),
constraint fk_pro_rank_t foreign key(to_rank_id) references rank(id));
insert into employee values(1, 'John', 'Roy'), (2, 'Kane', 'Williamson'), (3, 'Yasin', 'Khan'), (4, 'Dwayne', 'Brain');
insert into rank values(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E');
--One person can have many promotions so I insert two records for the same person
insert into promotion values(1, '2010-01-01', 1, 2, 1), (2, '2015-01-01', 2, 3, 1);
--I insert three promotions for the second employee
insert into promotion values(4, '2011-11-23', 1, 2, 2), (5, '2012-04-05', 2, 3, 2), (6, '2013-12-30', 3, 4, 2);
--I insert one record for the third person
insert into promotion values(7, '2015-10-21', 3, 4, 3);
--The last person does not have promotion
Теперь я хочу выбрать записи сотрудника вместе с их последними (максимальная дата продвижения по службе) записями продвижения по службе.
Требуемый результат:
EMP_ID Name Father_Name Pro_Date From_Rank To_Rank
1 John Roy 2015-01-01 B C
2 Kane Williamson 2013-12-30 C D
3 Yasin Khan 2015-10-21 C D
4 Dwayne Brain <Null> <Null> <Null>
Заранее благодарим за любую помощь.