2010-03-15 77 views
2

我想写一份声明中用于计算员工考勤和执行他们的idname,他一直工作在过去3个月的天为1个月,2和3指望NewTimeAttendance重复id计数员工考勤

我试图计算:

Select COUNT(employeeid) 
    from NewTimeAttendance 
where employeeid=1 and (month=1 or month = 2 or month = 3) 

这绝对是工作,但只是一名雇员。

的第二次尝试:

SELECT COUNT(NewEmployee.EmployeeID) 
    FROM NewEmployee INNER JOIN NewTimeAttendance 
    ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID 
    and (month=1 or month =2 or month = 3) 

这是工作,但它计算所有的员工,我希望它执行的每个EmployeeIdEmployeeNamenumber of days作为新的记录。

最后一次尝试:(你看到的代码之前...这是错的..但我想)

for i in 0..27 loop 
    SELECT COUNT(NewEmployee.EmployeeID),NewEmployee.EmployeeId,EmployeeName 
    FROM NewEmployee INNER JOIN NewTimeAttendance 
     ON NewEmployee.EmployeeID(i) = NewTimeAttendance.EmployeeID 
     and (month=1 or month =2 or month = 3) 
end loop 

我真的需要帮助...在此先感谢。

+0

@jjj,很高兴见到你已经尝试自己先解决这个问题。 – 2010-03-15 12:30:39

+0

^_^... ..感谢 – jjj 2010-03-15 12:48:03

回答

5

你需要一个GROUP BY功能,请尝试:

SELECT COUNT(NewEmployee.EmployeeID), NewEmployee.EmployeeId,EmployeeName 
FROM NewEmployee INNER JOIN NewTimeAttendance 
    ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID 
    and (month=1 or month =2 or month = 3) 
GROUP BY NewEmployee.EmployeeID, EmployeeName 
+1

我想你也需要将EmployeeName放入你的groupBy语句中。 – Paddy 2010-03-15 12:32:25

+1

@ Paddy,谢谢你是对的。我已经相应地更新了我的答案。 – 2010-03-15 12:47:07

+0

我会看到.........! – jjj 2010-03-15 12:52:25