如何在一个SELECT statament中使用两个或多个COUNT()?

jjj*_*jjj 1 sql join count

我开发此代码:

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)

在相同的选择声明中.

提前致谢

Gab*_*abe 5

看起来您正试图找出每位员工出席和缺席的天数.我会推荐这样的查询:

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)