mysql根据持续时间和日期范围计算叶子

时间:2015-03-04 07:02:44

标签: 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

我想以下列格式获取数据(基于date_leave_from和date_leave_to的计算):

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

http://sqlfiddle.com/#!2/25160/3

0 个答案:

没有答案