1

私はmysqlの問題を抱えており、最新の支払い額と、特定の月(このクエリでは4月を使用しています)の両方を見つけようとしています。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 に答える