所以我现在为此苦苦挣扎了一段时间。
员工只需在表 clocktimes
上添加开始和结束时间
我只想要所有员工的结果,包括那个日期间隔内的零(未显示的员工)。我也尝试过使用 COALESCE,但没有得到预期的结果。
regular
字段是单位示例中的时间量:3.5。
我的问题是显示结果为 0(零)的任务,该任务中没有时间。
使用的查询:
SELECT
employees.employeeid,
employees.emp_external_id,
employees.status_id,
employees.firstname,
employees.middlename,
employees.lastname,
IFNULL(SUM(clocktimes.Regular), 0) AS sumoftime
FROM
employees
LEFT JOIN clocktimes ON employees.emp_external_id = clocktimes.EmployeeGUID
WHERE
employees.status_id <> 3 AND
date(clocktimes.StartDate) BETWEEN '2017-07-01' AND '2017-07-15'
GROUP BY
employees.employeeid
ORDER BY
employees.firstname ASC
最佳答案
SELECT
employees.employeeid,
employees.emp_external_id,
employees.status_id,
employees.firstname,
employees.middlename,
employees.lastname,
IFNULL(SUM(clocktimes.Regular), 0) AS sumoftime
FROM
employees
LEFT JOIN clocktimes ON employees.emp_external_id = clocktimes.EmployeeGUID
WHERE
employees.status_id <> 3 AND
(date(clocktimes.StartDate) BETWEEN '2017-07-01' AND '2017-07-15') or date(clocktimes.StartDate) is null )
GROUP BY
employees.employeeid
ORDER BY
employees.firstname ASC
这里要注意的是,由于您是通过日期进行过滤,因此空列将被过滤掉。 检查 where 子句
关于mysql SUM left join force show results with sum of 0 零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45346559/