如何每天为每个唯一标识符快速创建一行?

我对SQL比较陌生,因为它具有SAS背景。我觉得有一个非常简单的解决方案...

我有两个表-日期维度和一个包含三列的表-客户编号,日期和事件标志。

我想建立一个数据集,为每个客户生成完整的365天历史记录。

例如,我的事件表具有此

CustomerNumber - Date - Event
12345   24/02/2019    1
12345   28/02/2019    1

我想要一个做这个的表;

CustomerNumber - Date - Event
12345   24/02/2019   1
12345   25/02/2019   0
12345   26/02/2019   0
12345   27/02/2019   0
12345   28/02/2019   1

当我加入日期维度时,我可以轻松地使日期和事件列正确显示,但是在事件表中没有记录的CustomerNumber字段中,我将获得NULL。

我需要保留客户编号,以便我可以每天为每个唯一客户运行30天的窗口总计。

haomeng228 回答:如何每天为每个唯一标识符快速创建一行?

您可以使用cross joinleft join

select c.customernumber,d.date,coalesce(t2.event,0) as event
from dates d cross join
     (select distinct customernumber from table2) c left join
     table2 t2
     on t2.date = d.date and t2.customernumber = c.customernumber;

您可以添加where子句,以过滤d.date特定时间段。

本文链接:https://www.f2er.com/3150778.html

大家都在问