Я в настоящее время кодирую существующую систему начисления заработной платы, и у меня есть проблема ниже.Мне нужно сосчитать количество отпусков одного работника за один год, чтобы перевести их на следующий.Дни могут быть либо полными, либо часами в дне (например, 6-часовой отпуск по умолчанию из 8-часового рабочего дня)
Однако существующая функция сохраняет только вышеупомянутые данные в таблице с такими столбцами.
EmployeeID | StartDate | EndDate | Hours
1 01-02-2018 04-02-2018 24
1 08-03-2018 08-03-2018 4
2 30-12-2017 04-01-2018 48
3 30-12-2018 04-01-2019 48
Теперь проблема в том, что я хочу ограничить даты только предыдущим годом.Таким образом, поскольку у нас 2019 год, мне нужны отпуска только с 2018 года. То есть записи с разными начальным и конечным годом, нуждаются в особой обработке
Таблица результатов должна выглядеть следующим образом
EmployeeID | HoursPreviousYear
1 28
2 32
3 16
Я ужеизвестно о некоторых полезных функциях SQL, таких как DATEDIFF () или YEAR (), но поскольку каждая запись различна, мне, вероятно, потребуется использовать курсор и выполнять итерации таблицы.Затем, чтобы передать результаты в другую таблицу, я должен был создать запрос и вернуть его.
Если честно, я сбит с толку ...
Мне никогда не приходилось использовать курсоры раньше инасколько я могу видеть, я не уверен, смогу ли я вернуть таблицу в результате (которую я также должен использовать позже).Я не уверен, стоит ли продолжать с этим бороться, но кажется, что должен быть более простой способ.
Другой вариант - изменить поведение кнопки Сохранить, чтобы сохранить 2 разные записи,без перекрывающихся лет, но я не могу, так как у нас есть устаревшие данные ...