mysql按持续时间和日期范围计算假期

mysql按持续时间和日期范围计算假期,mysql,Mysql,我有一张桌子 Name duration date_leave_from date_leave_to John 1 2015-03-01 2015-03-02 Doe .5 2015-03-03 2015-03-04 Doe 1 2015-01-03 2015-01-03 Doe 1 2015-02-04 2015-02-06 我希望获

我有一张桌子

Name    duration    date_leave_from date_leave_to
John    1           2015-03-01      2015-03-02
Doe     .5          2015-03-03      2015-03-04
Doe     1           2015-01-03      2015-01-03
Doe     1           2015-02-04      2015-02-06
我希望获得以下格式的数据(基于日期离开和日期离开的计算):

Name      ||  Jan     ||   Feb    ||  March   ||  April 
John      ||  1       ||   0      ||  2       ||  0  
Doe       ||  0       ||   3      ||  1       ||  0 
查询是:正在运行的。。但不是根据叶子的数量来计算的

SELECT requester,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '1' THEN duration else 0 END) AS Jan,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '2' THEN duration else 0 END) AS Feb,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '3' THEN duration else 0 END) AS March,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '4' THEN duration else 0 END) AS April,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '5' THEN duration else 0 END) AS May,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '6' THEN duration else 0 END) AS Jun,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '7' THEN duration else 0 END) AS Jul,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '8' THEN duration else 0 END) AS Aug,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '9' THEN duration else 0 END) AS Sep,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '10' THEN duration else 0 END) AS Oct,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '11' THEN duration else 0 END) AS Nov,
       SUM(CASE WHEN MONTH(`date_leave_from`) = '12' THEN duration else 0 END) AS December
FROM tbl_hr_leave_form
GROUP BY requester

因此,不考虑持续时间,而是考虑从和到之间的差异?例如,Doe应该看到3月份是1,而不是0.5?你又问了同样的问题。是的,持续时间将乘以日期差