Расчет регистрации и проверки записей посещаемости сотрудников.
Приветствую семью. Пожалуйста, я не получаю желаемый результат, который ищу в своей таблице посещаемости сотрудников. Я хочу рассчитать общее количество часов, отработанных каждым сотрудником за дневную базу при регистрации и выезде из нее. Ниже приводится то, что я пробовал. Надеюсь получить помощь в этом вопросе. Заранее спасибо.
Что я уже пробовал:
Create Table EmployeeAttendanceDetails ( EmployeeID VarChar(10) Not Null, EmployeeName VarChar(50) , Designation VarChar(50) , WorkingDate Date Not Null, InputType VarChar(10) Not Null, TimeInput Time Not Null )--Образцы Данных Для Тестирования
EmployeeID EmployeeName Department WorkingDate InputType TimeI EMP105 Success Abena Gyasiwaa Marketing Manager 2017-01-12 Time In 08:07 EMP101 Samuel Osei Banahene Deputy MD 2017-01-12 Time In 08:08 EMP104 George Mensah Supervisor 2017-01-12 Time In 08:10 EMP103 Nancy Koffour Department Head 2017-01-12 Time In 08:10 EMP102 Andrews Appiah Sarkodie Managing Director 2017-01-12 Time In 08:12 EMP101 Samuel Osei Banahene Deputy MD 2017-01-12 Time Out 17:35 EMP102 Andrews Appiah Sarkodie Managing Director 2017-01-12 Time Out 17:35 EMP103 Nancy Koffour Department Head 2017-01-12 Time Out 17:37 EMP104 George Mensah Supervisor 2017-01-12 Time Out 17:38 EMP105 Success Abena Gyasiwaa Marketing Manager 2017-01-12 Time Out 17:40--В конце работы я хочу выбрать записи, рассчитать часы за день и вставить записи в новую таблицу. Ниже приведена таблица и оператор select - - - -.
Create Table EmployeeAttendanceTable ( EmployeeID VarChar(10), EmployeeName VarChar(50), WorkingDate Date, CheckIn VarChar(10), CheckOut VarChar(10), [Hours] DECIMAL(18,2) ) --Select statement Insert Into EmployeeAttendanceTable Select I.EmployeeID,I.EmployeeName,Cast(WorkingDate As Date)As [Date], Convert(VarChar(10),I.TimeInput,108)As CheckIn, Convert(VarChar(10),O.TimeInput,108)As CheckOut, CAST(DATEDIFF(MINUTE,I.TimeInput,O.TimeInput)/60.0 AS DECIMAL(18,2)) [Hours] From EmployeeAttendanceDetails I OUTER APPLY (Select TOP 1 InputType, TimeInput From EmployeeAttendanceDetails t Where t.BranchCode = 'B101' And t.WorkingDate ='12 JAN 2017' And t.TimeInput > I.TimeInput Order By t.TimeInput )O Where I.InputType ='Time In' And O.InputType ='Time Out' --My problem is that is able to calculate only the last entry for the checkin employee only. --Result EmployeeID EmployeeName WorkingDate CheckIn CheckOut Hours EMP102 Andrews Appiah Sarkodie 2017-01-12 08:12:11 17:35:11 9.38
NanaKwame
@Richard MacCutchan пожалуйста, это не решило проблему. Но все равно спасибо.