感谢一些帮助,我有一个MySQL查询,从2014-10-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-10 -10-10-09年度而不是第1年-10-10至2016-10-09年度的展览?
这是我的SQL小提琴
谢谢
发布于 2015-10-13 17:57:18
我将以这种方式创建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小提琴
发布于 2015-10-13 17:56:34
我不确定我是否实现了你的目标,但这是我的方法:
http://sqlfiddle.com/#!9/371a7/14
SELECT
e.name AS Employee,
@year := CEIL(DATEDIFF(h.date, e.startdate)/365) AS Year,
CONCAT(DATE_ADD(e.startdate, INTERVAL @year-1 YEAR),' - ',DATE_ADD(e.startdate, INTERVAL @year 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 Yearhttps://stackoverflow.com/questions/33108765
复制相似问题