我需要构建一种算法,该算法可以查看X个记录中有重叠日期的记录,并按时间顺序组织并重新插入这些日期值。 例如。: 该表具有这样的记录:
Start Date End Date Value
1/1/2019 12/31/2099 10
当插入这样的新记录时:
5/1/2019 5/31/2019 25
算法应将这样的记录组织起来,并将其插入到新表中:
1/1/2019 4/30/2019 10
5/1/2019 5/31/2019 25
6/1/2019 12/31/2099 10
不应修改原始表,即不得在该原始表中重新插入/重新排列记录。
关于实现这一目标的最有效方法的任何技巧?不寻找特定于数据库的解决方案。 谢谢!
答案 0 :(得分:0)
首先确定日期可以重叠的方式。在我看来,时间可能重叠的方式是:
也许还有其他可能性,但该小组似乎是对的。
假设第二个表中的行已经不重叠,则可以相对容易地查询重叠表中的行,然后可以计算要使用的新日期组并更新第二个表。编写大量的单元测试进行计算。
请注意,这将是并发雷区(取决于您在其中执行的应用程序的种类)。如果两个用户可以同时提交一个新行,那么您将需要某种方式来确保读取,计算和更新是一项原子操作,否则您的第二张表将变得非常不一致。