我开发此代码:
SELECT COUNT(NewEmployee.EmployeeID), NewEmployee.EmployeeId,EmployeeName
FROM NewEmployee INNER JOIN NewTimeAttendance
ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
and NewTimeAttendance.TotalTime is null
and (NewTimeAttendance.note = '' or NewTimeAttendance.note is null)
and (month = 1 or month = 2 or month = 3)
GROUP BY NewEmployee.EmployeeID, EmployeeName
order by EmployeeID
Run Code Online (Sandbox Code Playgroud)
从我之前的两个问题中选择空的东西并计算问题 ...这个惊人的代码工作得非常好......但现在我需要select不止一个count......
...搜索(谷歌)....发现alias...尝试:
SELECT COUNT(NewEmployee.EmployeeID) as attenddays, COUNT(NewEmployee.EmployeeID) as empabsent
, NewEmployee.EmployeeId,EmployeeName
FROM NewEmployee INNER JOIN NewTimeAttendance
ON empabsent =NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
and NewTimeAttendance.TotalTime is null
and (NewTimeAttendance.note = '' or NewTimeAttendance.note is null )
and (month=1 or month =2 or month = 3) ,
attenddays = NewTimeAttendance.EmployeeID
and NewTimeAttendance.TotalTime is null
and (NewTimeAttendance.note = '' or NewTimeAttendance.note is null )
and (month=1 or month =2 or month = 3)
GROUP BY NewEmployee.EmployeeID, EmployeeName order by EmployeeID
Run Code Online (Sandbox Code Playgroud)
Incorrect syntax near '='.
第二次尝试:
SELECT COUNT(NewEmployee.EmployeeID) as attenddays, COUNT(NewEmployee.EmployeeID) as absentdays,
NewEmployee.EmployeeId,EmployeeName
FROM NewEmployee INNER JOIN NewTimeAttendance
ON attenddays(NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
and NewTimeAttendance.TotalTime is null
and (NewTimeAttendance.note = '' or NewTimeAttendance.note is null )
and (month=1 or month =2 or month = 3)) ,
absentdays(NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
and NewTimeAttendance.TotalTime is null
and (NewTimeAttendance.note = '' or NewTimeAttendance.note is null )
and (month=1 or month =2 or month = 3))
GROUP BY NewEmployee.EmployeeID, EmployeeName order by EmployeeID
Run Code Online (Sandbox Code Playgroud)
Incorrect syntax near '='.
不是很好的想法...所以...帮助
我想要的只是count具有不同条件的ID ...
COUNT(NewEmployee.EmployeeID)
ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
and NewTimeAttendance.TotalTime is null
and (NewTimeAttendance.note = '' or NewTimeAttendance.note is null )
and (month=1 or month =2 or month = 3)
Run Code Online (Sandbox Code Playgroud)
和
COUNT(NewEmployee.EmployeeID)
ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID
and NewTimeAttendance.TotalTime is not null
and (NewTimeAttendance.note = '' or NewTimeAttendance.note is null )
and (month=1 or month =2 or month = 3)
Run Code Online (Sandbox Code Playgroud)
在相同的选择声明中.
提前致谢
看起来您正试图找出每位员工出席和缺席的天数.我会推荐这样的查询:
SELECT EmployeeId, EmployeeName,
(SELECT COUNT(*)
FROM NewTimeAttendance
WHERE NewTimeAttendance.EmployeeID = NewEmployee.EmployeeId
/* include condition for employee in attendance */
AND TotalTime IS NULL
AND (Note = '' or Note IS NULL)
AND Month BETWEEN 1 AND 3) AS AttendDays,
(SELECT COUNT(*)
FROM NewTimeAttendance
WHERE NewTimeAttendance.EmployeeID = NewEmployee.EmployeeId
/* include condition for employee absent */
AND TotalTime IS NULL
AND (Note = '' or Note IS NULL)
AND Month BETWEEN 1 AND 3) AS AbsentDays
FROM NewEmployee
ORDER BY EmployeeID
Run Code Online (Sandbox Code Playgroud)