You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按各账户最后交易日期分别获取其最近N个月交易数据?

按每个ID自身最后交易日期筛选最近N个月交易数据的实现方案

这个需求完全可行,核心思路是先获取每个ID的最后交易日期,再以此为基准筛选该ID下近3个月的交易记录。

示例数据

ID    | Trx_Amount |    Trx_Date
ID001 |    104     |   04/10/2022
ID002 |     76     |   20/09/2022
ID003 |     82     |   17/08/2022

实现方案

方法1:子查询关联(适配多数数据库)

SELECT t1.*
FROM your_table t1
JOIN (
    -- 先统计每个ID的最后交易日期
    SELECT ID, MAX(Trx_Date) AS last_trx_date
    FROM your_table
    GROUP BY ID
) t2 ON t1.ID = t2.ID
-- 筛选该ID下交易日期在最后交易日期往前3个月内的记录
WHERE t1.Trx_Date >= DATEADD(MONTH, -3, t2.last_trx_date)

方法2:窗口函数(适用于MySQL 8.0+、PostgreSQL、SQL Server等)

通过窗口函数直接为每条记录打上对应ID的最后交易日期标签,再做筛选:

WITH id_last_trx AS (
    SELECT 
        *,
        MAX(Trx_Date) OVER (PARTITION BY ID) AS last_trx_date
    FROM your_table
)
SELECT ID, Trx_Amount, Trx_Date
FROM id_last_trx
WHERE Trx_Date >= DATEADD(MONTH, -3, last_trx_date)

不同数据库的日期语法调整

如果使用PostgreSQL,日期计算语法略有不同,可修改为:

SELECT t1.*
FROM your_table t1
JOIN (
    SELECT ID, MAX(Trx_Date) AS last_trx_date
    FROM your_table
    GROUP BY ID
) t2 ON t1.ID = t2.ID
WHERE t1.Trx_Date >= t2.last_trx_date - INTERVAL '3 months'

内容的提问来源于stack exchange,提问作者H. D. U.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:31:18