dames
dames

Reputation: 1481

Finding the Most current entry for a month using mysql

I am having a mysql problem I am trying to find both the most current payment value, and, for a particular month (in this query I'm using April). Link to the sqlfillde is here

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

This is what I have but it doesn't seem to be working. The most current payment value is: (5, '2012-04-20', 90,) therefore it would be 90 I would really appreciate some help please.

Upvotes: 1

Views: 61

Answers (1)

Taryn
Taryn

Reputation: 247710

How about this:

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

see SQL Fiddle with demo

Upvotes: 3

Related Questions