我正在使用一个将 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 进行分组。当我执行脚本时,我不断收到编译错误。
您可以选择前 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