我有一个mysql问题,我试图找到特定月份的最新值,可以看到整个表架构和数据here,我为此目的编写的查询如下:
max(case
when Month(py.pay_date) = 8
then amount end) previous_month_amount
但是,它没有返回正确的值,在这种情况下,正确的值应该是:
name previous_month_amount
Carl 30
Mark 40
希望我的问题足够明确,谢谢你的帮助。
答案 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