更新 table 产品中的日期
Update dates in table product
我有 table product
,
一篇文章可以在同一时期(或几天后)出现在多个列表中
我需要正确更新开始日期
-识别重复列表并删除重复项
-恢复最早的列表(取决于开始日期)
-更新重叠列表的开始日期和结束日期
例如:
Listing article site start date end date
L1 A1 001 01/01/2020 25/02/2020
L2 A2 001 15/02/2020 31/03/2020
预期结果
Listing article site start date end date
L1 A1 001 01/01/2020 25/02/2020
L2 A2 001 26/02/2020 31/03/2020
有什么想法吗?
如果我们假设结束日期是准确的,您可以使用:
with toupdate as (
select t.*,
lag(end_date) over (partition by site order by end_date) as prev_end_date
from t
)
update toupdate
set start_date = dateadd(day, 1, prev_end_date)
where start_date <> dateadd(day, 1, prev_end_date) and
prev_end_date is not null;
可能有一些非常复杂的情况,最早结束日期不是最早开始日期,但您的示例数据并非如此。
我有 table product
,
一篇文章可以在同一时期(或几天后)出现在多个列表中
我需要正确更新开始日期 -识别重复列表并删除重复项
-恢复最早的列表(取决于开始日期)
-更新重叠列表的开始日期和结束日期
例如:
Listing article site start date end date
L1 A1 001 01/01/2020 25/02/2020
L2 A2 001 15/02/2020 31/03/2020
预期结果
Listing article site start date end date
L1 A1 001 01/01/2020 25/02/2020
L2 A2 001 26/02/2020 31/03/2020
有什么想法吗?
如果我们假设结束日期是准确的,您可以使用:
with toupdate as (
select t.*,
lag(end_date) over (partition by site order by end_date) as prev_end_date
from t
)
update toupdate
set start_date = dateadd(day, 1, prev_end_date)
where start_date <> dateadd(day, 1, prev_end_date) and
prev_end_date is not null;
可能有一些非常复杂的情况,最早结束日期不是最早开始日期,但您的示例数据并非如此。