如何只显示最近 5 笔交易?

问题描述 投票:0回答:1

我正在使用一个将 SQL 转换为 Fox Pro 的脚本(Visual Fox Pro 和我生成的代码来显示付款历史记录。但是我只希望它显示最近 5 笔付款以及相应的付款

此查询将显示所有已付款。 我只需要最后5笔付款

trns.trxdate = payment date
trns.payment = payment amount

'Trying to generate SIF/PIF report for Feb 2024
strsql = "SELECT dbt.ourfile, dbt.ncustfile, dbt.preourfile, dbt.assdate, dbt.sdate, dbt.jdate, debt.cdate, trns.trxdate, trns.payment FROM dbt JOIN trns ON dbt.ourfile = trns.ourfile where dbt.custid in ('C1495', 'C1196') AND dbt.cdate => {d'2024-02-01'} AND trns.trx in ('01', '02', '07', '09')"

上面的代码产生以下结果,我正在寻找一种只显示最近 5 笔交易的方法。有些账户有数百笔交易。

![1]: https://imgur.com/a/Hz8U388.jpg“数据拉取结果”

我想要的结果是这样的(只显示最后5笔交易)

![1]:https://imgur.com/P2QAC1D.jpg“期望的结果”

如有任何帮助,我们将不胜感激。当我试图寻找解决方案时,谷歌不是我的朋友。

我尝试过使用 MAX 和 CTE 进行分组。当我执行脚本时,我不断收到编译错误。

visual-foxpro
1个回答
0
投票

您可以选择前 5 名以及按降序排列。这应该为您提供按降序排列的最近 5 笔交易。如果您需要按升序排列这 5 条记录,您可以执行另一个查询来对结果重新排序。

SELECT TOP 5 dbt.ourfile, dbt.ncustfile, dbt.preourfile, ;
    dbt.assdate, dbt.sdate, dbt.jdate, debt.cdate, ;
    trns.trxdate, trns.payment ;
    FROM dbt ;
    JOIN trns ;
    ON dbt.ourfile = trns.ourfile ;
    WHERE dbt.custid IN ('C1495', 'C1196') ;
    AND dbt.cdate => {d'2024-02-01'} ;
    AND trns.trx IN ('01', '02', '07', '09') ;
    ORDER BY trns.trxdate DESC
© www.soinside.com 2019 - 2024. All rights reserved.