SQL Server创建视图:合并历史与预测货架库存数据
合并历史与预测货架库存数据的SQL解决方案
要得到包含历史实际库存和未来预测库存的完整数据集,核心是确保保留projected_shelf_balance表中的所有日期(包括未来周),同时关联shelf_balance中的历史实际库存数据。可以通过RIGHT JOIN实现,因为预测表已经覆盖了所有需要的时间范围(历史+未来26周)。
具体SQL代码
CREATE VIEW combined_shelf_balance AS SELECT p.Date, p.product, s.quantity, p.proj_quantity FROM shelf_balance s RIGHT JOIN projected_shelf_balance p ON s.Date = p.Date AND s.product = p.product ORDER BY p.Date, p.product;
代码说明
- 使用
RIGHT JOIN以projected_shelf_balance(预测表)为主表,确保所有预测表中的记录都被保留,包括未来周的数据。 - 关联条件同时匹配
Date和product,保证同一产品同一日期的数据正确关联。 - 当历史表
shelf_balance中没有对应日期的记录时(未来周),quantity字段会自动显示为NULL,完全符合预期输出要求。
通用替代方案(适用于日期范围不完全重叠场景)
如果后续存在两张表日期范围不完全重叠的情况,也可以用FULL OUTER JOIN确保所有两边的记录都被保留,再用COALESCE统一日期和产品字段:
CREATE VIEW combined_shelf_balance AS SELECT COALESCE(s.Date, p.Date) AS Date, COALESCE(s.product, p.product) AS product, s.quantity, p.proj_quantity FROM shelf_balance s FULL OUTER JOIN projected_shelf_balance p ON s.Date = p.Date AND s.product = p.product ORDER BY Date, product;
内容的提问来源于stack exchange,提问作者jt721
相关产品推荐
相关产品推荐

