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 に答える