在mysql中查找特定月份的最新值

时间:2012-09-09 17:35:30

标签: mysql

我有一个mysql问题,我试图找到特定月份的最新值,可以看到整个表架构和数据here,我为此目的编写的查询如下:

max(case 
when Month(py.pay_date) = 8
then amount  end) previous_month_amount

但是,它没有返回正确的值,在这种情况下,正确的值应该是:

name  previous_month_amount
Carl      30
Mark      40

希望我的问题足够明确,谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我将您的问题解释为“每月支付的最后一笔费用是多少?”如果您回答这个问题,那么只需选择正确的月份即可获得相应的“最后付款”。以下查询执行此操作:

select p.name, lp.yr, lp.mon, pa.amount
from persons p join
     (select person_id, year(pay_date) as yr, month(pay_date) as mon,
             max(pay_date) as max_pay_date
      from payment
      group by person_id, year(pay_date), month(pay_date)
     ) lp
     on p.id = lp.person_id join
     payment pa
     on p.id = pa.person_id and
        pa.pay_date = lp.max_pay_date
group by p.name, lp.yr, lp.mon, pa.amount