拉链表

1.原始数据


原始数据

2.目标数据


目标数据

sql实现


update
    dwd.dwd_reattribute_device_df a
set
    end_date = b.stat_end_date
from(
    select
         row_number() over(partition by gameid,channelid,uuid order by start_date) as rowid
        ,lead(start_date,1) over(partition by gameid,channelid,uuid order by start_date) as stat_end_date  -- 根据start_date排序的下一个日期
        ,gameid
        ,gameversion
        ,channelid
        ,uuid
        ,start_date
    from
        dwd.dwd_reattribute_device_df
)b
where
    a.gameid     = b.gameid
and a.channelid  = b.channelid
and a.uuid       = b.uuid
and a.start_date = b.start_date
and a.end_date  <> b.stat_end_date
;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容