如何关联历史与预测数据集,生成指定结构的视图?
问题解答
可以实现关联,不需要额外追加日期,两张表自带的日期字段足够支撑需求。
你的原SQL存在语法和逻辑问题:
- Left Join缺少关联的目标表名(需指定关联预测表)
- On子句位置错误,应紧跟在关联表名后
- Case语句未指定别名,字段间缺少逗号分隔
- 未按日期匹配,会导致同一Unique_ID下日期不对应的无效关联
针对需求,提供三种常用场景的正确SQL写法:
场景1:保留所有日期(含历史表有但预测表无、预测表有但历史表无的日期)
SELECT COALESCE(H.Date, F.Date) AS Date, H.Data AS H.Data, F.Data AS F.Data, COALESCE(H.Unique_ID, F.Unique_ID) AS Unique_ID FROM Historical AS H FULL OUTER JOIN Forecast AS F ON H.Unique_ID = F.Unique_ID AND H.Date = F.Date
用COALESCE取非空的日期和唯一标识,FULL OUTER JOIN确保两边所有记录都被保留。
场景2:仅保留日期重叠且唯一标识匹配的记录
SELECT H.Date AS Date, H.Data AS H.Data, F.Data AS F.Data, H.Unique_ID AS Unique_ID FROM Historical AS H INNER JOIN Forecast AS F ON H.Unique_ID = F.Unique_ID AND H.Date = F.Date
INNER JOIN仅返回两边同时存在匹配(唯一标识+日期都对应)的记录,精准覆盖重叠日期区间。
场景3:保留历史表所有日期,匹配对应日期的预测数据(无则显示NULL)
SELECT H.Date AS Date, H.Data AS H.Data, F.Data AS F.Data, H.Unique_ID AS Unique_ID FROM Historical AS H LEFT JOIN Forecast AS F ON H.Unique_ID = F.Unique_ID AND H.Date = F.Date
内容的提问来源于stack exchange,提问作者Cameron Clark
相关产品推荐
相关产品推荐

