【发布时间】:2021-06-08 10:57:26
【问题描述】:
我正在尝试构建一个表格,该表格应显示当前年份和上一年的产品价格。我必须在雪花中实现这个解决方案。我有一张如下图所示的表格。
| product_id | product_price | Fiscal_Year |
|---|---|---|
| x1 | $100 | 202002 |
| x1 | $200 | 201902 |
| x1 | $300 | 201802 |
我有一个单独的日期维度表,其中映射了上一个财政周年度,如下所示。
| Fiscal_year | PREV_FISCAL_YEAR |
|---|---|
| 202002 | 201902 |
| 201902 | 201802 |
| 201802 | 201702 |
现在我想以这样的方式创建一个表格,它应该显示当前财政年度的产品价格x1 和上一财政年度的产品价格。
预期的表格输出
| product_id | product_price | Fiscal_Year | prev_product_price | prev_Fiscal_Year |
|---|---|---|---|---|
| x1 | $100 | 202002 | $200 | 201902 |
| x1 | $200 | 201902 | $300 | 201802 |
| x1 | $300 | 201802 | somevalue | somevalue |
感谢任何帮助。谢谢
【问题讨论】:
-
使用 LAG() 函数。
-
产品 ID 和会计年度不是唯一值。可能有重复,所以如果我使用 lag() 那么我最终可能会将相同的会计年度值用于重复记录
-
产品 id 和会计年度不是唯一值。 而
(product_id, Fiscal_year)值对也不是唯一的吗?如果是这样,那么任务是无法解决的。 -
是的,偶数对也不是唯一的
-
您告诉
201902是202002的上一财年。如果存在具有201902和不同product_price值的2 个不同行(例如,$100 和$110),那么对于202002,必须使用什么值作为prev_product_price?
标签: sql database snowflake-cloud-data-platform