我正在建立一个图表,显示每个员工每月的新合同数量。不是每个月都记录在我的表中,如何将0记录为每个月没有记录的每个员工的合同数?
SELECT EmployeeName, SUM(contract) as nbcontract
FROM table
WHERE month(Date) = month(now())
group by EmployeeName
当月(现在)没有记录时的当前结果:
EmployeeName|nbcontract
预期结果:
EmployeeName|nbcontract
employee1 0
employee2 0
employee3 0
...
其中EmployeeName显示EmployeeName的所有可能的不同值
任何提示将不胜感激!
答案 0 :(得分:1)
使用条件聚合:
SELECT
EmployeeName,
SUM(CASE WHEN MONTH(date) = MONTH(NOW()) THEN contract ELSE 0 END) AS nbcontract
FROM yourTable
GROUP BY
EmployeeName;
这种方法将确保即使在当月没有合同,每个员工也会出现在结果集中。