如果没有记录,如何获取计数为零的记录

时间:2014-05-14 05:42:49

标签: sql join

我有三个表enter image description here 我想用计数显示请假类型。为此我写了一个像

这样的查询
SELECT VM.vacation_id,
       VM.vacation_desc,
       isnull(sum(VR.total_hours_applied),0) AS totalCount
FROM EMPTYPE_VACATIONCONFIG VC
LEFT JOIN HR_Vacation_Master VM ON VC.VACATIONID=VM.vacation_id
INNER JOIN HR_Employee_Vacation_Request VR ON VR.vacation_id=VM.vacation_id
WHERE VR.employee_id=156
  AND VC.BRANCHID=20
GROUP BY VM.vacation_desc,
         VM.vacation_id

我的查询工作正常,仅提供现有的假期结果。像enter image description here 我想要第三次离开alos,总计为零。 如果员工没有申请任何休假(在第二张表中),该记录不会列入清单。我也希望记录的totalCount为零。 我怎么能这样做

2 个答案:

答案 0 :(得分:1)

如果一名员工没有申请休假,那么HR_Employee_Vacation_Request表中不应该有他(或她)员工ID的记录,对吗?所以我认为你应该使用HR_Vacation_Master左外连接表HR_Employee_Vacation_Request。

答案 1 :(得分:1)

这是因为VR.employee_id=156你不允许空行。

你可以这样做:

SELECT VM.vacation_id,
       VM.vacation_desc,
       isnull(sum(VR.total_hours_applied),0) AS totalCount
FROM EMPTYPE_VACATIONCONFIG VC
LEFT JOIN HR_Vacation_Master VM ON VC.VACATIONID=VM.vacation_id
LEFT JOIN HR_Employee_Vacation_Request VR 
    ON VR.vacation_id=VM.vacation_id AND VR.employee_id=156
WHERE VC.BRANCHID=20
GROUP BY VM.vacation_desc,
         VM.vacation_id

如果这不起作用,请给我留言,我还有其他想法。