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

SQL关联季度与月度表 按另一表日期区间求和的实现问题

SQL季度数据关联求和实现方案
原代码问题分析

原SQL仅通过A.Date = B.Date关联两张表,只会匹配到表2中与表1季末日期完全一致的单条月度记录,无法覆盖对应季度内的所有月份数据,因此求和结果不符合预期。

实现思路
  • 统一将两张表的日期转换为「年份+季度」的统一维度标识
  • 关联条件新增相同ID、相同年份、相同季度的匹配规则
  • 按表1的ID、日期、名义金额分组,对表2的收益率求和
不同SQL方言实现示例

MySQL 版本

SELECT 
    A.ID,
    A.Date,
    A.Notional,
    SUM(B.Yield) AS Yield
FROM Table1 A
LEFT JOIN Table2 B 
    ON A.ID = B.ID
    AND YEAR(STR_TO_DATE(A.Date, '%d/%m/%Y')) = YEAR(STR_TO_DATE(B.Date, '%d/%m/%Y'))
    AND QUARTER(STR_TO_DATE(A.Date, '%d/%m/%Y')) = QUARTER(STR_TO_DATE(B.Date, '%d/%m/%Y'))
GROUP BY A.ID, A.Date, A.Notional

如果Date字段本身为日期类型而非字符串,可直接删除STR_TO_DATE转换逻辑,直接调用日期函数即可

Oracle 版本

SELECT 
    A.ID,
    A.Date,
    A.Notional,
    SUM(B.Yield) AS Yield
FROM Table1 A
LEFT JOIN Table2 B 
    ON A.ID = B.ID
    AND TO_CHAR(TO_DATE(A.Date, 'DD/MM/YYYY'), 'YYYYQ') = TO_CHAR(TO_DATE(B.Date, 'DD/MM/YYYY'), 'YYYYQ')
GROUP BY A.ID, A.Date, A.Notional

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 01:06:08