1

我遇到了一个 mysql 问题,我正在尝试查找最新的付款值,以及特定月份(在此查询中我使用 April)。sqlfillde 的链接在这里

(case when max(py.pay_date)and month(py.pay_date)= 4 then amount else 0 end) max_pay_april,

这就是我所拥有的,但它似乎不起作用。最新的付款价值是:(5, '2012-04-20', 90,)因此,90 我非常感谢您的帮助。

4

1 回答 1

3

这个怎么样:

select p.name,
  v.v_name,
  sum(case when Month(py.pay_date) = 4 then amount end) april_amount,

  max(case 
    when month(py.pay_date)= 4 
    and py.pay_date = (select max(pay_date) 
                       from payment 
                       where month(pay_date) =4 )

   then amount else 0 end) max_pay_april,

   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


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

于 2012-08-30T14:37:22.913 回答