如何修改SQL实现指定日期范围内各客户最新余额查询
SQL修改方案
你原有SQL的逻辑本身符合需求:通过ROW_NUMBER()窗口函数按客户ID分组,组内按日期倒序排序取第一条,即可得到每个客户在指定时间范围内的最新余额。仅需要调整日期范围的限定条件即可适配任意日期范围查询:
核心修改点
- 将原查询中写死的单月时间范围条件,替换为你需要查询的自定义起始、结束日期即可,推荐使用参数化方式传值避免SQL注入风险。
修改后示例代码
SELECT * FROM ( SELECT id, date_1, balance, ROW_NUMBER() OVER ( PARTITION BY id ORDER BY date_1 DESC ) AS RN FROM customer -- 此处替换为实际需要的查询日期范围,也可替换为代码中的参数占位符 WHERE date_1 BETWEEN '自定义起始日期' AND '自定义结束日期' ) sub WHERE rn = 1
特殊场景补充
如果你需要将指定日期范围内没有余额更新记录的客户也纳入结果展示(例如展示其此前的最新历史余额),可以调整逻辑为:先拉取全量客户ID列表,再左关联匹配符合日期条件的最新余额记录即可。
内容的提问来源于stack exchange,提问作者Hammad Saleem
相关产品推荐
相关产品推荐

