如何使用另一个表中的日期列过滤一个表的开始和结束日期

Posted

技术标签:

【中文标题】如何使用另一个表中的日期列过滤一个表的开始和结束日期【英文标题】:How can i filter my start and end dates of one table using Date column from another table 【发布时间】:2019-04-04 01:38:08 【问题描述】:

我有两张表,其中包含以下详细信息。

带有 startdate 和 enddate 列的 Table1。

带有限定日期的表 2。

我想根据table2中的qualifyingdate得到table1的最终结果。

示例:日期为 yyyy-mm-dd 格式

表1:

         startdate   enddate
row1 : 2018-01-01    2018-03-31
row2 : 2018-02-01    2018-03-31
row3 : 2018-04-20    2018-06-30
row4 : 2017-07-01    2018-12-31
row5 : 2019-08-01    2020-11-30

表2:

   QualifyingDate   
row1 : 2018-03-01  
row2 : 2018-01-31  
row3 : 2018-04-20  
row4 : 2018-07-01  
row5 : 2018-08-01

table1 的最终输出:

row1 : 2018-01-01  2018-03-31 (From table2, row1&row2 falls in between)
row2 : 2018-02-01  2018-03-31 (From table2, row1 falls in between)
row3 : 2018-04-20  2018-06-30 (From table2, row3 falls in between)
row4 : 2017-07-01  2018-12-31 (From table2, row1-row5 falls in between)

请帮帮我。

【问题讨论】:

【参考方案1】:

你似乎想要:

select t1.*
from table1 t1
where exists (select 1
              from table2 t2
              where t2.QualifyingDate between t1.startdate and t1.enddate
             );

【讨论】:

以上是关于如何使用另一个表中的日期列过滤一个表的开始和结束日期的主要内容,如果未能解决你的问题,请参考以下文章

根据另一个表中的开始日期和结束日期对值求和

我想知道使用 INNER JOIN 和相等运算符更快,或者当我尝试通过另一个表的列过滤表中的数据时使用 IN

如何从单个日期列-oracle 获取开始/结束日期

开始日期结束日期列上的 JSON Linq.js 过滤器

Spark Window Functions:过滤掉开始和结束日期在另一行开始和结束日期范围内的行

Oracle Query 按另一个表中的每个日期范围对一列求和