C# 迟到查询的语法

C# 迟到查询的语法,c#,sql-server,C#,Sql Server,我想知道员工迟到的频率 到目前为止,我已经用过这个了 SELECT EMPID ,EMPNAME ,COUNT(TimeIn) AS LATECOUNT FROM (SELECT EMPLOYEEID AS EMPID, EmployeeName AS EMPNAME, AbsenceDate AS ABSDAT, MIN(TimeIn) AS TimeIn FROM dbo.viewAttendance GROUP

我想知道员工迟到的频率

到目前为止,我已经用过这个了

SELECT  EMPID 
       ,EMPNAME
      ,COUNT(TimeIn) AS LATECOUNT  FROM        
 (SELECT  EMPLOYEEID AS EMPID, EmployeeName AS EMPNAME, AbsenceDate AS ABSDAT, MIN(TimeIn) AS TimeIn
   FROM  dbo.viewAttendance
         GROUP BY AbsenceDate, EMPLOYEEID, EmployeeName
         HAVING      (MIN(TimeIn) > '08:00:00')
  ) AS a

使用该代码,我只能检索只有迟到至少一次的员工的行(仅返回30行)。我真正想要的是一份300行(所有员工)的完整报表,显示他们迟到的人数。我的头脑不够清楚,无法找到正确的语法。我知道问题出在(MIN(timeIn)>'08:00:00'有人能帮我吗?提前谢谢…)

为什么不使用这样的东西:

select e.empname, (select count(1) from dbo.viewAttendance a where a.EmployeeId = e.employeeId and a.timein > '08:00:00') as latecount
from employees e

您是否有可以从中加入的员工表?此外,员工是否可以在查看考勤时对单个
缺勤日期
有多条记录?考虑到列名是
缺勤日期
,如果员工准时打卡,是否会有记录?如果他们按时打卡,是否会使用其他列?如果他们在一天中根本没有出现,是否有员工的
缺勤日期
和无
时间记录
?如果你回答了这些问题,我想我可以为你写下这个问题。:)是的,我有一个
masterEmployee
表,而且在
查看考勤
中,一名员工可以为一个
缺勤日期
有多条记录。如果员工准时/少于8:00打卡,则会进行记录。如果他们根本不出现,那么根本就不会有
缺勤日期
timeIn
超时
。还有一件事,有些员工的
timeIn
为空,表示他们可以根本没有
timeIn
,或者从午餐时间返回后制作的
timeIn
。。。我很高兴能得到你的帮助,谢谢你。重新设计是一种选择吗?在我看来,有一张时间表和一张考勤表似乎更符合逻辑。前者将指定员工必须何时来上班,另一个将显示他们实际何时来上班。这样一来,计算缺勤天数和迟到天数应该会容易得多。啊,这一个很好。我只需要稍微修改一下,以适应我的桌子。谢谢你,丹
SELECT
  E.EMPNAME
  ISNULL(SUM(CASE WHEN A.TIMEIN > '08:00:00' THEN 1 ELSE 0 END), 0) AS LATE_ATTENDANCE
FROM
 dbo.MASTEREMPLOYEE E
 LEFT JOIN dbo.viewATTENDANCE A ON A.EMPLOYEEID = E.EMPLOYEEID