如何复制行,但更改特定列中的值postgresql-redshift

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

我有一个需要在接下来的13周中重复的数据集。但是,在某一列中,日期需要更新。

我的数据::

table1

col1    col2    col3    col4    col5    date
110010  axbc    ORT.01  +   ACTIVE  07-Jun
110011  axbe    ORT.01  +   ACTIVE  08-Jun
110012  axbc    ORT.01  +   ACTIVE  09-Jun
110013  axbe    ORT.01  +   ACTIVE  10-Jun
110014  axbc    ORT.01  +   ACTIVE  11-Jun
110015  axbe    ORT.01  +   ACTIVE  12-Jun
110016  axbc    ORT.01  +   ACTIVE  13-Jun

数据需要重复,但日期列应更新。

预期输出:

col1    col2    col3    col4    col5    date
110010  axbc    ORT.01  +   ACTIVE  07-Jun
110011  axbe    ORT.01  +   ACTIVE  08-Jun
110012  axbc    ORT.01  +   ACTIVE  09-Jun
110013  axbe    ORT.01  +   ACTIVE  10-Jun
110014  axbc    ORT.01  +   ACTIVE  11-Jun
110015  axbe    ORT.01  +   ACTIVE  12-Jun
110016  axbc    ORT.01  +   ACTIVE  13-Jun
110010  axbc    ORT.01  +   ACTIVE  14-Jun
110011  axbe    ORT.01  +   ACTIVE  15-Jun
110012  axbc    ORT.01  +   ACTIVE  16-Jun
110013  axbe    ORT.01  +   ACTIVE  17-Jun
110014  axbc    ORT.01  +   ACTIVE  18-Jun
110015  axbe    ORT.01  +   ACTIVE  19-Jun
110016  axbc    ORT.01  +   ACTIVE  20-Jun
..........................
..........................

我曾尝试在Redshift中使用交叉联接,但数据不正确/不一致。

select col1,col2,col3,col4,col5,updated_Date

from table1

cross join (select distinct dateadd('day',91,date) as updated_Date)
sql amazon-redshift
1个回答
0
投票

我将为您提供解决方案。由于我不是postgresql专业人士,因此您可能会得到其他人的更好的解决方案,或者您自己也可能会对此有所改善。

[我将反复使用interval '7' day机制达13周。我试图定义一个变量并将其循环执行(或游标),但该操作并不成功。

请参阅以下适用于您的作品:

将数据原样保留在表中,并创建另一个表以放置创建的数据。

Insert into t2
Select col1,col2,col3,col4,col5, col6 from t
union
Select col1,col2,col3,col4,col5, col6 + interval '7' day as col6 from t
union
Select col1,col2,col3,col4,col5, col6 + interval '14' day as col6 from t
....
;

这里是fiddle

© www.soinside.com 2019 - 2024. All rights reserved.