0

我有一张包含多个交易的表格。我正在尝试获取最后一笔交易的行。我正在使用以下内容:

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 不是同一记录。

IE:

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 字段不是与该记录一起使用的 amt。

任何帮助将不胜感激。

4

1 回答 1

1

有很多方法可以解决这个问题,一种是加入额外的子查询,单独获取PostDate每个AccountNumber. 然后,子查询的结果将连接到另一个表,前提是它应该在两列上匹配: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..
于 2013-05-01T15:57:26.013 回答