如何在前一行的基础上插入新行



给定表格:

频率
名称 日期 最后日期
人员1 2022年1月1日 2022年5月2日 30天

我们可以在INSERT SELECT中使用递归CTE来生成日期
我使用了where name = 'Person1',但可以根据需要删除或修改。如果表2中存在表1中的记录,应更新、复制该记录还是不更改该记录
我已自行将频率字段类型设置为int以表示天数。我们可以改变这一点,以便能够在几天、几周、几个月等时间内对频率进行编程,但CTE的增加将变得更加复杂
底部有一个dbFiddle链接。

create Table table1(
Name varchar(25),
FirstDate Date,
LastDate Date,
Frequency int);
insert into table1 values
('Person1','1-Jan-2022','2-May-2022',30);
create table table2 (
Name varchar(25),
UpdatedDate date,
SomeColumn varchar(25));
INSERT INTO table2 
WITH CTE (Name, Date_, LD ) AS
(SELECT
Name,
FirstDate AS Date_ ,
LastDate
FROM table1
WHERE Name = 'Person1'
UNION ALL
SELECT
Name,
Date_ + 30,
LD
FROM CTE
WHERE Date_ <= LD)
SELECT Name, Date_, null FROM CTE;
SELECT * FROM table2;
NAME|UPDATEDDATE|SOMICOLUMN:--------|:---------|:---------人物1|01-JAN-22|null人物1|31-JAN-22|nullPerson1|02-MAR-22 |null角色1|01-APR-22|null人物1| 01-MAY-22|nullPerson1| 31-MAY-22|null

db<gt;小提琴这里

相关内容

  • 没有找到相关文章

最新更新