我有三个表 我想用计数显示请假类型。为此我写了一个像
这样的查询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
我的查询工作正常,仅提供现有的假期结果。像 我想要第三次离开alos,总计为零。 如果员工没有申请任何休假(在第二张表中),该记录不会列入清单。我也希望记录的totalCount为零。 我怎么能这样做
答案 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
如果这不起作用,请给我留言,我还有其他想法。