首页 > 解决方案 > 如果同一剪辑存在相同的日期,则提出能够添加时间间隔的逻辑#

问题描述

如果它具有相同的日期,我正在尝试分离出一个剪辑。例如,由于“剪辑编号”1 和 2 具有相同的日期,所以我试图通过添加 6 小时间隔来使日期不同。我想添加一个类似于“新日期”列的新字段

日期 Clip_Number 新日期
2021 年 1 月 2 日 1 2021 年 1 月 2 日 0:00
2021 年 1 月 2 日 1 2021 年 1 月 2 日 0:00
2021 年 1 月 2 日 2 2021 年 1 月 2 日 6:00
2021 年 1 月 2 日 2 2021 年 1 月 2 日 6:00
2021 年 1 月 3 日 3 2021 年 1 月 3 日 0:00
2021 年 1 月 3 日 3 2021 年 1 月 3 日 0:00

标签: sqldatedatetimelogicsnowflake-cloud-data-platform

解决方案


戈登解决方案有效,但前提是“只有两个值具有相同的日期”。

即使在这种情况下,此解决方案也有效:

with data as (
select 1 clip, '2020-10-03' d
union all select 1, '2020-10-03'
union all select 1, '2020-10-03'
union all select 2, '2020-10-03'
union all select 2, '2020-10-03'
union all select 3, '2020-10-03'
union all select 3, '2020-10-04'
union all select 3, '2020-10-04'
)

select *
  , timestampadd('hour'
      , 6*(-1+dense_rank() over(partition by d order by clip))
      , d
    ) new_date
from data

在此处输入图像描述


推荐阅读