更改重复值的情况

问题描述 投票:0回答:1

我正在尝试添加一个 case when 语句,如果每两列有重复项,该语句会将 +1day 添加到记录的日期列中。

这将是原始表格:

A B C
红色 桌子 2023-01-01
红色 桌子 2023-01-01

这将是结果:

A B C
红色 桌子 2023-01-01
红色 桌子 2023-01-02

我知道使用 DATEADD 足以更新日期

select DATEADD( 'day',1,'2023-09-13')::date;
但无法理解如何获取重复字段并在列选择期间仅更新 case when 语句中的其中一个字段。

编辑:如果 A 列和 B 列相同,我希望第二条记录 C 列更新 +1 天。

CASE    
        WHEN ROW_NUMBER() OVER (PARTITION BY a,b > 1) 
            THEN DATEADD('day', 1, a)
        ELSE a
        END AS c

例如,这样的事情会更新两行。

任何帮助表示赞赏。

sql amazon-redshift case data-manipulation
1个回答
0
投票

你走在正确的道路上。您应该使用

ROW_NUMBER
的结果减一作为添加到日期的天数:

SELECT *, DATEADD(
              'day',
              ROW_NUMBER() OVER (PARTITION BY A, B ORDER BY C) - 1,
              C) AS new_date
FROM yourTable
ORDER BY 1, 2, 3;
© www.soinside.com 2019 - 2024. All rights reserved.