我有一个“供应”表,其中包含sku,snapshot_date,target_week,数量等列。还有一个“ date_dimension”主表,其中包含日期,周,月,季度,年,季度_日期。
现在,我的任务是将供应与日期=快照日期的date_dimension表联接起来,以从date_dimension表中获取每个snapshot_date的详细信息。
此外,我必须执行相同操作以获取每个target_week的详细信息,这可以通过在date = target_week上加入来完成。
这意味着,我进行了两次连接,供应表中包含数百万行的数据,因此两次连接将非常昂贵。
是否有更好的方法来解决此问题并显示如下输出:
snapshot_date | week_snapshot_date | month_snapshot_date | year_snapshot_date | ....| target_week | week_target_week| month_target_week | year_target_week |.....
答案 0 :(得分:0)
您需要两个联接:
select s.*, . . . -- the columns from the dimension table
from supply s left join
date_dimension ds
on ds.date = s.snapshot_date left join
date_dimension dt
on dt.date = s.target_week;
注意:如果两列中的任何一个具有left join
值,则使用NULL
。