0

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

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

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

name  previous_month_amount
Carl      30
Mark      40

希望我的问题足够清楚,并感谢您的帮助。

4

1 回答 1

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
于 2012-09-09T20:29:52.737 回答