如何左联接并包含空值?

时间:2019-08-20 15:19:46

标签: sql google-bigquery bigquery-standard-sql

我需要将2个表连接在一起。

表A =在2019年购买产品的客户。

表B =购买了产品并在第12个月及之后的所有月份都处于活动状态(例如,在第13个月,第14个月处于活动状态)的客户

表B当前不包括在2019年购买产品的人,因为他们自购买以来不可能活跃于1200万。

但是,仅出于我的客户群的目的,我想将表A的客户包括在表B中。任何计算都可以表示为Null。

所以我的表最终应该看起来像:

Customer ID           Date        Month       Active
                (product bought)        
A                 2018-01-01       12           1  
A                 2018-01-01       13           1   
A                 2018-01-01       14           1   
B                 2019-01-01       Null         Null 
C                 2019-04-01       Null         Null   

每当我尝试左联接时,它似乎都不起作用。我想知道将这些客户包括到我的桌子中的最佳方法是什么?

表A 当前看起来像

Customer ID           Date        Month       Active
                (product bought)        
B                 2019-01-01       1           1 
C                 2019-04-01       1           1  

Month = 1表示他们购买了商品并处于活跃状态。但是,由于它们距离该日期还没有达到12个月(即2020-01-01或2020-04-01),因此它们不能包含在表B的基础中,因此应该没有数据,因此在表B.尽管为了我的基础,我只需要在表中提供它们的ID。

谢谢! Manisha

1 个答案:

答案 0 :(得分:3)

我认为您想要union all

select b.customerid, b.date, b.month, b.active
from b
union all
select a.customerid, a.date, null, null
from a;