如何在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
相关产品推荐
相关产品推荐

