У меня есть таблица данных заработной платы, в которой указаны ставки заработной платы и даты вступления в силу, связанные с этими ставками заработной платы, а также часы, отработанные в различные даты. Это выглядит примерно так:
EMPID DateWorked Hours WageRate EffectiveDate
1 1/1/2010 10 7.00 6/1/2009
1 1/1/2010 10 7.25 6/10/2009
1 1/1/2010 10 8.00 2/1/2010
1 1/10/2010 ...
2 1/1/2010 ...
...
И так далее. По сути, данные были объединены таким образом, что за каждый отработанный день вся история заработной платы сотрудника объединяется, и я хочу получить ставку заработной платы, связанную с ПОСЛЕДНЕЙ датой вступления в силу, которая не позднее, чем отработанная дата. Таким образом, в приведенном выше примере ставка 7,25, которая вступает в силу 6/10/2009, - это то, что я хочу.
Какой запрос я могу собрать для этого? Я могу использовать MAX (EffectiveDate) вместе с критериями, основанными на том, чтобы быть до даты работы, но это дает мне только самую последнюю дату, я хочу соответствующую зарплату. Я использую Sql Server для этого.
Кроме того, у меня есть оригинальные таблицы, которые использовались для создания этих данных. Одна из них содержит отработанные даты и часы, а также EMPID, другая содержит список ставок заработной платы и даты вступления в силу. Есть ли способ присоединиться к ним, который бы правильно применял правильную ставку заработной платы для каждого рабочего дня?
Я думал, что хочу сгруппировать по EMPID, а затем по DateWorked и что-то сделать оттуда. Я хочу получить результат, который дает мне ставку заработной платы, которая фактически является последней эффективной ставкой для каждой отработанной даты