多亏了一些帮助,我才有了一个MySQL查询,该查询从2014-10-10开始,并对12个月内的假期数量进行了罚款,例如2014-10-10至2015-10-09,然后是2015-10-10至2016-10-09
SELECT e.name AS Employee, CEIL(DATEDIFF(h.date, e.startdate)/365) as Year, count(h.date) as Holidays_Taken FROM employees AS e LEFT JOIN holidays_taken AS h ON e.id = h.empid WHERE e.id = 1 GROUP BY Year
结果
+----------+------+---------------+ | Employee | Year | Holidays_Taken| +----------+------+---------------+ | Jon | 1 | 5 | +----------+------+---------------+ | Jon | 2 | 1 | +----------+------+---------------+
是否可以将2014年10月10日到2015年10月9日而不是从1年开始显示,然后将2015年10月10日到2016年10月9日作为第二年显示
这是我的SQL FIDDLE
谢谢
我将以CONCAT这种方式创建:
CONCAT
SELECT e.name AS Employee, CONCAT( CEIL(DATEDIFF(h.date, e.startdate)/365), ' (', DATE_ADD(e.startdate, INTERVAL FLOOR(DATEDIFF(h.date, e.startdate)/365) YEAR), ' to ', DATE_ADD(e.startdate, INTERVAL CEIL(DATEDIFF(h.date, e.startdate)/365) YEAR), ')' ) as Year, COUNT(h.date) AS Holidays_Taken, SUM(h.hours) AS Hours FROM employees AS e LEFT JOIN holidays_taken AS h ON e.id = h.empid WHERE e.id = 1 GROUP BY Year
演示: SQL FIDDLE