我有一个包含多个交易的表格。我想要获取最后一笔交易的行。 我使用以下内容:
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为1/3,行为#2为1/4,但Amt字段不是与该记录一致的amt。
非常感谢任何帮助。
答案 0 :(得分:1)
有很多方法可以解决这个问题,一个是加入额外的子查询,哪个单独获取每个PostDate
的最新AccountNumber
。然后子查询的结果将在另一个表上连接,前提是它应匹配两列:AccountNumber
和PostDate
。
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..