<pre lang="sql">SELECT MST_EMPLOYEE.[ID] as ID
,[EMPCODE]
,[EMPFNAME]+' '+[EMPMNAME]+' '+[EMPLNAME] AS EMPNAME
,(SELECT DESIGNATION FROM MST_DESIGNATION WHERE ID=
(SELECT TOP(1) DESIGNATIONID FROM EMP_PROFESSIONALDETAILS WHERE EMPID=MST_EMPLOYEE.ID ORDER BY HIREDATE DESC)) AS DESIGNATION
, min(Times_IN) as TimeIn , max(Times_Out) as TimeOut,
( select count (distinct _Date) from Emp_Attendance where month (_date)= 6 and EmpID = MST_EMPLOYEE.[ID] ) as WorkedDays
,(select CONVERT(varchar(3),SUM(DATEDIFF(MINUTE, Times_In, Times_Out)) / 60)
+':' + RIGHT('0' + CONVERT(varchar(2),SUM(DATEDIFF(MINUTE, Times_In, Times_Out)) % 60),2)
from Emp_Attendance where month (_date)= 6 and EmpID = MST_EMPLOYEE.[ID] )
as TotalWorkedHours
,
(select CONVERT(varchar(3),SUM(DATEDIFF(MINUTE, StartTime, EndTime)) / 60)
+':' + RIGHT('0' + CONVERT(varchar(2),SUM(DATEDIFF(MINUTE, StartTime, EndTime)) % 60),2)
from Emp_PermissionsRequest where MONTH(_Date) = 6 and EmployeeID = MST_EMPLOYEE.[ID] )
as TotalPermissionHours
FROM [MST_EMPLOYEE] left join Emp_Attendance on Emp_Attendance.EmpID=MST_Employee.ID
left join Emp_PermissionsRequest on Emp_PermissionsRequest.EmployeeID=MST_Employee.ID
where month(Times_IN) = 6
group by MST_Employee.ID, MST_Employee.EmpCode, EmpFName, EmpMName, EmpLName