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

如何在Snowflake中编写SQL获取产品当前及上一财年的价格数据?

Snowflake 财年价格对比表SQL实现

实现思路

  • 优先使用提供的财年映射表做关联,避免因财年规则特殊(如财年起始月非1月、跳年等)导致窗口函数取数错误
  • 两次关联产品价格表,分别获取当前财年、上一财年的价格数据

假设表名

  • 产品价格表:product_price
  • 财年维度映射表:fiscal_year_map

实现SQL

SELECT
    curr.product_id,
    curr.product_price,
    curr.Fiscal_Year,
    prev.product_price AS prev_product_price,
    fy_map.PREV_FISCAL_YEAR AS prev_Fiscal_Year
FROM product_price curr
-- 关联财年映射表拿到对应上一财年编号
INNER JOIN fiscal_year_map fy_map
    ON curr.Fiscal_Year = fy_map.Fiscal_year
-- 左连价格表获取上一财年同产品的价格,没有匹配则返回NULL
LEFT JOIN product_price prev
    ON curr.product_id = prev.product_id
    AND fy_map.PREV_FISCAL_YEAR = prev.Fiscal_Year
ORDER BY curr.product_id, curr.Fiscal_Year DESC;

可选调整

如果需要给无匹配的上一财年数据设置默认值,可以用COALESCE函数修改对应字段,示例:

COALESCE(prev.product_price, '无数据') AS prev_product_price,
COALESCE(fy_map.PREV_FISCAL_YEAR::VARCHAR, '无数据') AS prev_Fiscal_Year

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 07:36:02