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

MySQL匹配两列返回第三列值:时间序列同比计算实现

解决MySQL时间序列同比匹配问题

没问题,我来帮你搞定这个同比计算的SQL语句!要实现通过prev_year_code匹配current_month_code获取去年同期的value,最直接的方式是用自连接(把表和自身关联起来),这样就能把当前行和对应的去年同期行绑定在一起。

核心SQL语句示例

假设你的表名为time_series_data,可以参考这个写法:

SELECT
    t1.date AS current_date,
    t1.value AS current_value,
    t2.value AS prev_year_value, -- 去年同期的数值
    t1.intermodal_id,
    t1.current_month_code,
    t1.prev_year_code
FROM
    time_series_data t1
LEFT JOIN
    time_series_data t2 
    ON t1.prev_year_code = t2.current_month_code 
    AND t1.intermodal_id = t2.intermodal_id; -- 确保同一主体的同期数据匹配

关键细节说明

  • 自连接逻辑:用t1指代当前数据行,t2指代去年同期的行。通过prev_year_code和current_month_code的相等关系,精准定位对应的去年数据。
  • 连接类型选择:
    • 用LEFT JOIN会保留所有当前行,哪怕某行没有对应的去年数据(此时prev_year_value会显示NULL),适合需要完整数据集的场景。
    • 如果只需要有同期匹配数据的行,把LEFT JOIN改成INNER JOIN即可。
  • intermodal_id关联的必要性:加上这个条件是为了避免不同主体(不同intermodal_id)的code巧合重复导致匹配错误,让关联逻辑更严谨。如果你的current_month_code已经包含了intermodal_id的唯一标识(比如unique_id就是intermodal_id),这个条件也可以省略,但建议保留以保证数据准确性。

内容的提问来源于stack exchange,提问作者Z.Mack

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:37:01