首页 > 解决方案 > 我如何获得所有客户最近一次交易的详细信息?

问题描述

以下是示例表

SrNo, Date, TypeOfTran, CustID, AmtDue, AmtRec
1, 01-Jan-2021, 0,      A,       102,       0
2, 01-Jan-2021, 0,      A,       120,       0
1, 02-Jan-2021, 0,      D,       140,       0
1, 02-Jan-2021, 1,      D,         0,     176
2, 02-Jan-2021, 1,      D,         0,     188
1, 05-Jan-2021, 0,      P,         0,     196
2, 05-Jan-2021, 1,      L,         0,     134

*TypeOfTran [到期 = 0,收据 = 1]

SrNo 在日期更改和 TyepOTran 更改时重置

我想创建一个查询,该查询将返回每个客户的最后一条记录。

客户可以在一天中的任意时间进行购买和/或付款。

我阅读了如何查询 sql 以获取每个用户查询的最新记录日期中给出的答案,但这是基于一个条件,即日期。

我正在使用 MS Access

谢谢你。

请参阅上表的附图

标签: sqlms-access

解决方案


SQL 表表示无序集。因此,您需要第二列来获取每天的最后一列。如果日期列具有时间组件,这将得到解决,但情况似乎并非如此。让我假设在一天SrNo提供订购。

如果是这样:

select t.*
from t
where t.date = (select max(t2.date) 
                from t as t2 
                where t2.custId = t.custId
               ) and
      t.SrNo = (select max(t2.SrNo) 
                from t as t2 
                where t2.custId = t.custId and t2.date = t.date
               ) ;

第一个条件获取最后日期的值。第二个获取日期的最后一个值,假设SrNo提供了该排序。

出于性能考虑,您需要在(custId, date, srNo).


推荐阅读