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

如何使用SQL从两张表中获取每个ID对应起始日期前3个月的数据

按ID匹配并获取指定日期区间的Amount数据

需要实现的逻辑是:针对每个ID,以Table A中该ID对应的Start_Date为基准,提取Table B中同ID且Start_Date在该基准日期前3个月内的Amount数据。

表结构及示例数据

Table A

IDStart_Date
12022-08-01

Table B

IDStart_DateAmount
12022-08-011000
12022-07-012000
12022-06-013000
12022-05-01500

现有SQL的局限性

你提供的以下SQL仅能基于当前日期筛选Table A的数据,无法满足按每个ID对应的基准日期匹配Table B数据的需求:

SELECT * 
  FROM TableA
 WHERE Start_Date >= DATEADD(M, -3, GETDATE())

正确SQL实现方案

通过ID关联两张表,再根据Table A的Start_Date设定Table B的日期筛选范围,以SQL Server为例,具体语句如下:

SELECT 
    a.ID,
    a.Start_Date AS Base_Date,
    b.Start_Date AS B_Date,
    b.Amount
FROM 
    TableA a
JOIN 
    TableB b ON a.ID = b.ID
WHERE 
    b.Start_Date >= DATEADD(MONTH, -3, a.Start_Date)
    AND b.Start_Date <= a.Start_Date;

逻辑说明

  • 用JOIN通过ID关联两张表,确保只匹配同ID的数据
  • DATEADD(MONTH, -3, a.Start_Date)计算出基准日期往前推3个月的日期
  • 筛选条件限定Table B的Start_Date在这个计算出的日期和基准日期之间,确保获取的是前3个月内的数据

针对示例数据,执行该SQL会得到以下结果:

IDBase_DateB_DateAmount
12022-08-012022-08-011000
12022-08-012022-07-012000
12022-08-012022-06-013000

(注:2022-05-01距离2022-08-01超过3个月,因此不会被包含)

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:35:28