我有employees
表{/ 1}}字段
我有date_of_join
表,其中包含以下字段:
employee_leaves
该员工于2011年2月15日加入
我希望有一个查询,根据他的date_of_join
显示每个员工年度的叶子数例如,如果员工于2011年2月15日加入,则结果将如下:
employee_id
leave_from
leave_to
total_days
其中2月到2月是雇员年,因此每年2月15日至2月14日
任何人都可以帮忙吗?
答案 0 :(得分:0)
没有您的数据很难对此进行测试,但我根据您的描述想出了以下内容:
SELECT employees.employee_id, DATE_ADD(employees.date_of_join, INTERVAL yrs.years) frm
,DATE_ADD(employees.date_of_join, INTERVAL yrs.years + 1) too,
SUM(employee_leaves.total_days)
FROM employee_leaves
INNER JOIN (SELECT 0 years UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) yrs
ON 1=1
INNER JOIN employees ON employee_leaves.employee_id = employees.employee_id
AND employee_leaves.leave_from BETWEEN DATE_ADD(employees.date_of_join, INTERVAL yrs.years) AND DATE_ADD(employees.date_of_join, INTERVAL yrs.years + 1)
GROUP BY employees.employee_id, DATE_ADD(employees.date_of_join, INTERVAL yrs.years)
;
可能需要一些摆弄,希望这有帮助。