Я пытаюсь рассчитать, сколько времени на отпуск будет у сотрудника, исходя из количества времени, в течение которого он работал.Присоединиться к максимальному значению, если условие присоединения не выполнено
employeeVacation -> идентификатор, yearsWorked, vacationHours
сотрудник -> EmpID, StartDate
я могу получить количество лет, работник работал с помощью этого
datepart(year, getdate()) - datepart(year,StartDate) as yearsWorked
После работы для более того, 8 лет, время отпуска такое же. Вот мой праздничный стол.
id years vacationHours
1 0 40
2 1 40
3 2 40
4 3 80
5 4 80
6 5 80
7 6 80
8 7 120
select e.empid, ev.vacationhours from employee e join employeevacation ev on
ev.yearsWorked = datepart(year, getdate()) - datepart(year,e.StartDate)
Так что скажите, что вы работаете в течение 30 лет. Я не могу присоединиться, чтобы получить количество часов отпуска. Должен ли я искать присоединение, или я должен просто сократить свои потери и вставить годы в таблицу отдыха до 100, так что я могу присоединиться и не беспокоиться об этом.
Будьте осторожны здесь. Если у вас есть сотрудник, который стартовал в декабре, и вы запустили его в следующем январе (это может быть всего лишь пару дней), вы вернетесь 1 как количество лет работы, когда оно даже не было более месяца. –