【发布时间】:2020-06-09 07:39:03
【问题描述】:
我正在尝试从两个表中编写一个视图,一个包含产品 ID 和周的参考表:
+------------+------+
| Product_id | week | t1
+------------+------+
| 1 | 1 |
| 2 | 1 |
| 1 | 2 |
| 2 | 2 |
| 1 | 3 |
| 2 | 3 |
+------------+------+ etc...
另一个包含产品 ID、产品价格变化的周数和价格
+------------+------+-------+
| Product_id | week | price | t2
+------------+------+-------+
| 1 | 1 | 70 |
| 1 | 2 | 50 |
| 2 | 2 | 70 |
| 1 | 4 | 30 |
| 2 | 4 | 40 |
+------------+------+-------+
我知道如何通过加入这两个表来轻松实现这一点:
+------------+------+-------+
| Product_id | week | price |
+------------+------+-------+
| 1 | 1 | 70 |
| 1 | 2 | 50 |
| 1 | 3 | |
| 1 | 4 | 30 |
| 1 | 5 | |
| 2 | 1 | |
| 2 | 2 | 70 |
| 2 | 3 | |
| 2 | 4 | 40 |
| 2 | 5 | |
+------------+------+-------+
但我的目标是填补空白并获得每周的价格(不创建任何新表),例如:
+------------+------+-------+
| Product_id | week | price |
+------------+------+-------+
| 1 | 1 | 70 |
| 1 | 2 | 50 |
| 1 | 3 | 50 |
| 1 | 4 | 30 |
| 1 | 5 | 30 |
| 2 | 1 | |
| 2 | 2 | 70 |
| 2 | 3 | 70 |
| 2 | 4 | 40 |
| 2 | 5 | 40 |
+------------+------+-------+ (product 2 isn't sold yet at week 1, so it doesn't have a price).
我不知道如何在 SQL 中执行此操作。我还没有使用 PARTITION BY 或 LAG ,这可能是我正在寻找的。如果有人能把我推向正确的方向,我将不胜感激:)
【问题讨论】:
标签: sql select teradata window-functions