2012-09-09 28 views
0

我有一個mysql問題,我想查找特定月份的最新值,整個表格架構和數據可以看到here,我寫的查詢要做到這一點如下:在mysql中查找特定月份的最近值

max(case 
when Month(py.pay_date) = 8 
then amount end) previous_month_amount 

但是它沒有返回正確的值,在這種情況下,正確的值應該是:

name previous_month_amount 
Carl  30 
Mark  40 

希望我做的問題不夠清楚,謝謝你您的幫助。

+0

如果兩次付款是在最近的日期進行的呢? – Sami

+0

如果顯示付款作出.. – dames

回答

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 
+0

我的主要問題是我實際上試圖將其與其他查詢合併 – dames