Каждый год необходимо определить единую максимальную зарплату, специфичную для этого года.
select e.EmpID
, e.EmpName
, r.Sal
, r.PaidYear
from @emp as e
inner join @Remu as r
on e.EmpId = r.EmpId
where r.sal = (select max(sal)
from @remu
where paidyear = r.PaidYear ' makes it year specific
)
Данные для тестирования:
declare @emp table
(
EmpID int,
EmpName varchar(10)
)
declare @Remu table
(
EmpID int,
Sal Decimal(10,2),
PaidYear varchar(10)
)
insert into @emp (EmpID, EmpName)
values(1, 'Jon')
insert into @emp (EmpID, EmpName)
values(2, 'Smith')
insert into @emp (EmpID, EmpName)
values(3, 'Nash')
insert into @emp (EmpID, EmpName)
values(4, 'Hoge')
insert into @emp (EmpID, EmpName)
values(5, 'Peter')
Insert into @Remu (EmpID, Sal, PaidYear)
values(1, 2000, '2001')
Insert into @Remu (EmpID, Sal, PaidYear)
values(2, 4999, '2001')
Insert into @Remu (EmpID, Sal, PaidYear)
values(2, 8000, '2003')
Insert into @Remu (EmpID, Sal, PaidYear)
values(3,4000, '2003')
Insert into @Remu (EmpID, Sal, PaidYear)
values(4, 5000, '2005')
Insert into @Remu (EmpID, Sal, PaidYear)
values(5, 4999, '2005')
Результаты:
EmpID EmpName Sal PaidYear
4 Hoge 5000.00 2005
2 Smith 8000.00 2003
2 Smith 4999.00 2001