我有一个需要在接下来的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)
我将为您提供解决方案。由于我不是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