sql - 我如何获得所有客户最近一次交易的详细信息?
问题描述
以下是示例表
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
谢谢你。
解决方案
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)
.
推荐阅读
- java - Java 中的城市集
- c++ - 使用 Codelite IDE 和 Ubuntu 执行格式错误
- python - 使用 Pandas 仅在同一 id 上加入两个 csv
- python - 在 discord.py 中使两个或多个命令能够同时运行
- python - 不和谐机器人每 24 小时自动向每个单独的频道发送挑战
- javascript - 在 switch case 中调用函数
- mysql - 为什么 PopSQL 要求我查看手册?
- reactjs - 使用嵌套记录 json 数据反应渲染错误
- postgresql - Windows 上的 .psqlrc 文件在哪里?
- .net-core - 在 AWS Lambda 函数列表中找不到 Amazon Lambda Tools for .NET 部署的 AWS lambda 函数