SELECT cast(dbo.EmployeeHours.EmployeeId as Int) as EmployeeID, dbo.EmployeeList.FirstName + ' ' + dbo.EmployeeList.LastName AS Name, dbo.EmployeeHours.TimeIn, dbo.EmployeeHours.TimeOut, cast(dbo.EmployeeHours.JobCode as Int) as JobCode, dbo.MasterJobCodeList.Description, dbo.EmployeeHours.CostCode FROM dbo.EmployeeHours INNER JOIN dbo.MasterCostCodeList ON dbo.EmployeeHours.CostCode = dbo.MasterCostCodeList.Level1 INNER JOIN dbo.MasterJobCodeList ON dbo.EmployeeHours.JobCode = dbo.MasterJobCodeList.JobCode INNER JOIN (SELECT EmployeeId, MAX(TimeOut) AS TimeOut FROM dbo.EmployeeHours GROUP BY EmployeeId) EmplMax ON EmplMax.EmployeeId = dbo.EmployeeHours.EmployeeId AND EmplMax.TimeOut = dbo.EmployeeHours.TimeOut INNER JOIN dbo.EmployeeList ON dbo.EmployeeHours.EmployeeId = dbo.EmployeeList.EmployeeId WHERE dbo.MasterCostCodeList.Active = 1 AND NOT dbo.EmployeeHours.TimeOut IS NULL ORDER BY dbo.EmployeeHours.employeeID Asc