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

如何在Snowflake中计算同一ID的当月对应上月值及月份

在Snowflake中关联同一ID的上月数据

需求说明

原表包含ID、Current_Month、Current_Value三个字段,示例数据如下:

IDCurrent_MonthCurrent_Value
1045678
1051234
1069876

需要生成包含ID、Previous_Month、Current_month、Previous_month_value、current_month_Value的结果表,展示同一ID对应的上月月份及数值,期望结果:

IDPrevious_MonthCurrent_monthPrevious_month_valuecurrent_month_Value
104556781234
105612349876

实现方案

使用Snowflake支持的窗口函数LAG(),按ID分区、Current_Month升序排序,获取每个记录的上一行数据:

SELECT
    ID,
    LAG(Current_Month) OVER (PARTITION BY ID ORDER BY Current_Month) AS Previous_Month,
    Current_Month AS Current_month,
    LAG(Current_Value) OVER (PARTITION BY ID ORDER BY Current_Month) AS Previous_month_value,
    Current_Value AS current_month_Value
FROM
    你的表名
QUALIFY Previous_Month IS NOT NULL; -- 过滤掉无上月数据的首行记录

代码解释

  • PARTITION BY ID:限定仅在同一ID的范围内匹配上月数据
  • ORDER BY Current_Month:按月份升序排列,确保LAG()取到的是前一个月的有效记录
  • QUALIFY Previous_Month IS NOT NULL:过滤每个ID的第一条无上月数据的记录,与期望结果保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:32:42