Как агрегировать строки в базе данных SQL на основе даты-раз в две недели
Уважаемые эксперты,
У меня есть следующий вид структуры в базе данных в виде строк;
Три столбца-идентификатор пользователя | дата | часы работы
Данные заполняются для каждого пользователя (с идентификаторами), каждой даты (с января 2010 года по декабрь 2020 года) и рабочего времени за каждый день.
Теперь бизнес-процесс заключается в том, что пользователь может изменить рабочее время. Например, я обычно работаю 75 часов в две недели. Но я хочу изменить свое рабочее время с января 2017 года на март 2017 года, так как работаю всего 40 часов в две недели. В этом случае система будет редактировать часы только между этими датами, а остальные часы будут оставлены такими, как есть, до декабря 2020 года.
Теперь я хочу вытащить отчет о том, сколько часов я работаю в организации. Из-за динамической природы и бизнес-процесса о смене часов в любое время я хочу получить результат следующим образом;
Тестовый пользователь с 01/01/2010 по 31/12/2016 75 часов в две недели
Тестовый пользователь с 01.01.2017 по 31.03.2017 40 часов в две недели
Тестовый пользователь с 01.04.2017 по 31.12.2020 75 часов в две недели
Может ли кто-нибудь помочь мне с этим?
Спасибо.
Что я уже пробовал:
Я попробовал использовать курсоры для любого конкретного сотрудника, а также использовать прямое добавление к датам и сравнение предыдущих двухнедельных часов, чтобы увидеть, есть ли разница, чтобы разбить строки в соответствии с требованиями вывода. Но я в замешательстве, так как это не послужило цели.
Пожалуйста, помогите мне.
Спасибо.
Tomas Takac
Есть ли у вас возможность изменить способ хранения данных? Потому что прямо сейчас нет никакого смысла хранить данные в день, в то время как вы управляете ими и сообщаете о них через две недели. Также вы должны опубликовать свой код (через Improve question).
Nayan Ambaliya
Несмотря на то, что мы отчитываемся раз в две недели, мне приходится хранить их изо дня в день, потому что мы можем изменить рабочее время для любого конкретного дня.