如何编写SQL查询以将两个不同的日期列与日期维表连接在一起

时间:2020-09-29 18:49:02

标签: sql join google-bigquery

我有一个“供应”表,其中包含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 |.....

1 个答案:

答案 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