计算日期间隔mysql之间的总和

时间:2012-08-30 02:45:07

标签: mysql

我试图找到两个日期之间的值之和,在这种情况下,我总是希望将一个日期保持为静态。例如找到4月到7月的日期之间的值,保持4月静止,因此另一个案例可能是4月到5月之间的值之和,再次保持4月为静态。我已经在很长一段时间内处理了几个查询,但是这样做并不成功,你可以看看下面的SQLFiddle here并帮助我,我真的很感激帮助

1 个答案:

答案 0 :(得分:5)

为什么不添加另一个CASE声明:

sum(case when pay_date between '2012-04-01' and '2012-06-01'
        then amount end) range_amount

所以你的查询将是:

SELECT p.name,
       v.v_name,
       SUM(CASE
             WHEN MONTH(py.pay_date) = 4 THEN amount
           end) april_amount,
       SUM(CASE
             WHEN MONTH(py.pay_date) = MONTH(CURDATE()) THEN amount
           end) current_month_amount,
       SUM(CASE
             WHEN MONTH(py.pay_date) = MONTH(CURDATE()) - 1 THEN amount
           end) previous_month_amount,
       SUM(CASE
             WHEN pay_date BETWEEN '2012-04-01' AND '2012-06-01' THEN amount
           end) range_amount
FROM   persons p
       LEFT JOIN vehicle v
              ON p.id = v.person_veh
       LEFT JOIN payment py
              ON p.id = py.person_id
GROUP  BY p.name,
          v.v_name

请参阅SQL Fiddle with Demo

然后,如果要更改日期范围,可以传递结束日期的值并将其设为变量。