2013-05-01 128 views
0

我有一個包含多個事務的表。我正在嘗試獲取最後一筆交易的記錄。 我使用了以下內容:在mysql中選擇最大記錄數

select n.AccountNumber, max(PostDate), f.TransAmt 
from mp_cycle n, fintrans f 
where n.AccountNumber = f.AccountNumber 
and TransCode >= '50' 
and TransCode <= '59' 
group by n.AccountNumber 

這是返回的最後日期爲特定帳戶,但TransAmt是不相同的記錄。

即:

Acct # Date Amt 
1  1/1 10.00 
1  1/2 11.00 
1  1/3 12.00 
2  1/2 20.00 
2  1/3 21.00 
2  1/4 22.00 

我的選擇將返回的最後日期爲每個帳戶,所以對於1/3的行爲#1和1/4的行爲#2,但金額字段不是AMT是與該記錄一致。

任何援助將不勝感激。

回答

1

有很多方法可以解決這個問題,一個是通過加入額外的子查詢,每個AccountNumber分別得到最新的PostDate。子查詢的結果將在另一個表上進行連接,前提是它應該匹配兩列:AccountNumberPostDate

SELECT a.*, b.* 
FROM mp_cycle a 
     INNER JOIN fintrans b 
      ON a.AccountNumber = b.AccountNumber 
     INNER JOIN 
     (
      SELECT AccountNumber, MAX(PostDate) max_date 
      FROM fintrans 
      GROUP BY AccountNumber 
     ) c ON b.AccountNumber = c.AccountNumber AND 
       b.PostDate = c.max_date 
-- WHERE ..your conditions here.. 
+0

我修改了頂部的選擇,只選擇我需要的3個字段,並在指定的位置添加了where子句。這似乎運作良好。謝謝! – 2013-05-01 16:19:54