You could create a workflow that, when the item is editied (maybe put some checks in to see if it was a new months entry, or ammending a previous entry) and then create a new item in a seperate list.
You can then use the second list to generate your reports on the historical data.
It would be good to place some sort of unique identifier in the second list, based on the user and month, so that if a user updates the current month, you can use the unique id to update the item in the second list, rather than creating a new one.
You could then generate reports in your new list by grouping items by user and sorting by Month, you could even have the view total up the hours worked for each user.
Hope this gives you a good idea.
Start by adding 2 new fields to you list
Yes/No: Update Existing (default value = NO)
Single Line of Text: UID
Then update your form to include a button at the top asking if user is updating the existing month
(If you don’t want people to be able to amend months, then you can leave that out)
If they are amending the month, set the field to TRUE
Also, have a field for the month (maybe just a date field)
(You could then also have a separate calculated field that displays just the year & month)
Create a new list with all the same fields as your first list, including the UID field
Build a workflow on your 1st list using SharePoint Designer
Start with an IF
IF 'Update Existing' = FALSE
Set workflow variable (of type text) to be "Month“+”username"
(This will be used as our UID)
Create new item in list
(Set all variables including the UID)
Update Item in List
(Update the fields in the second list, using the UID to find the item)
Ps. this is a very basic solution with no checking in place, so would be advisable to add additional checking to prevent duplicates, either in the workflow, or in the form