当您将表格与公共列组合时重叠日期逻辑 - 领先或滞后

Posted

技术标签:

【中文标题】当您将表格与公共列组合时重叠日期逻辑 - 领先或滞后【英文标题】:Overlapping dates logic when your are combining tables with common columns-Lead or lag 【发布时间】:2020-10-13 16:15:38 【问题描述】:

我在源中有 3 个表,我想应用联合并删除重复项并确保没有日期范围重叠。

Table 1 : Telst_Customer_current
Table 2 : Telst_Customer_history`enter code here`
Table 3 : Telst_Customer_tt

表 1 数据:Telst_Customer_current

cust_id     Account_no       Row_start_date            Row_end_date
 ---------------------------------------------------------------------
  123        68567             1/1/2012                  5/5/2013  
  123        68567             5/5/2013                  12/31/9999

表 2 数据:历史数据

cust_id     Account_no       Row_start_date            Row_end_date
 ------------------------------------------------------------------------
 123        68567             1/1/2009                  1/1/2012
 123        68567             1/1/2012                  5/5/2013  
 123        68567             5/5/2013                  12/31/9999  

当我像这样组合所有三个表时,我应该得到下面的结果表集,这样日期不会重叠

预期结果:

cust_id     Account_no       Row_start_date            Row_end_date
 ------------------------------------------------------------------------
   123        68567             1/1/2009                  1/1/2012
   123        68567             1/1/2012                  5/5/2013
   123        68567             5/5/2013                  12/31/9999

在约会时尝试过领先,但发现很难 还有一个快速简单的查询检查来查找引导逻辑是否在重叠故障检测中正常工作。感谢您对此的帮助。

【问题讨论】:

您能分享您迄今为止尝试过的查询吗?表3数据在哪里? 【参考方案1】:

联合起来怎么样?

Select col1, col2, col3 from Table1
Union
Select col4, col5, col6 from Table2
Union 
Select col7, col8, col9 from Table2

【讨论】:

否。合并后我将如何确保日期范围不重叠(比如当我合并当前交易和历史交易时 因此,在您的示例中,您提供的日期范围是完全匹配的。如果是这种情况,工会会解决它,因为它会删除重复项。但是,在您的情况下,如果发生日期范围重叠,即在一个表中,日期范围是 1 月 1 日 - 1 月 10 日,另一个是 1 月 8 日 - 1 月 16 日,您的场景不涵盖发生的情况然后。你想让它成为一个大的连接跨度还是选择一个而不是另一个,如果是的话,是哪一个以及为什么。

以上是关于当您将表格与公共列组合时重叠日期逻辑 - 领先或滞后的主要内容,如果未能解决你的问题,请参考以下文章

如何在不拖入谷歌表格的情况下自动填充日期列?

当您将数据绑定到集合时,如何将其设置为属性? [复制]

将多个DataFrame与偶尔重叠组合在一起

在 SQL 中检测和合并日期范围的连续重叠

计算 SQL 中组的重叠时间(以秒为单位)

动态规划算法Dynamic Programming