Usually, to check if a record exists (how you do it to participate, the employee’s check was not checked during the day), it’s more efficient to use LEFT OUTER JOIN and check for NULL in one of the WHERE clause fields (i.e. LEFT JOIN, wherever single row not found).
However, this also will not give you a date.
, , , , .
, , , , CROSS JOIN, LEFT JOIN empCheckInOut. .
SELECT SMEmployee.BadgeNumber,SMEmployee.EmployeeFullName,SMDepartment.DepartmentName, subDate.aDate
FROM SMEmployee
CROSS JOIN (SELECT '2014-07-01' AS aDate UNION SELECT '2014-06-30') subDate
LEFT OUTER JOIN SMDepartment
ON SMDepartment.DepartmentID=SMEmployee.DepartmentID
LEFT OUTER JOIN empCheckInOut
ON SMEmployee.EmployeeID = empCheckInOut.USERID
AND convert(date,CHECKTIME) = subDate.aDate
WHERE empCheckInOut.USERID IS NULL