加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在SQL – Oracle中查找匹配的间隔

发布时间:2020-12-12 08:26:44 所属栏目:MsSql教程 来源:网络整理
导读:我有一张桌子: 表: start end1 Jan 09 31 Jan 20091 Feb 09 28 Feb 20091 Mar 09 31 Mar 20091 Apr 09 01 May 20091 May 09 31 May 20091 Jun 09 01 Jul 20091 Jul 09 31 Jul 20091 Aug 09 31 Aug 20091 Sep 09 01 Oct 20091 Oct 09 31 Oct 20091 Nov 09 01
我有一张桌子:

表:

start         end
1 Jan 09    31 Jan 2009
1 Feb 09    28 Feb 2009
1 Mar 09    31 Mar 2009
1 Apr 09    01 May 2009
1 May 09    31 May 2009
1 Jun 09    01 Jul 2009
1 Jul 09    31 Jul 2009
1 Aug 09    31 Aug 2009
1 Sep 09    01 Oct 2009
1 Oct 09    31 Oct 2009
1 Nov 09    01 Dec 2009
1 Dec 09    31 Dec 2009
1 Jan 10    31 Jan 2010
1 Feb 10    03 Mar 2010
1 Mar 10    31 Mar 2010
1 Apr 10    01 May 2010
1 May 10    31 May 2010
1 Jun 10    01 Jul 2010
1 Jul 10    31 Jul 2010
1 Aug 10    31 Aug 2010
1 Sep 10    01 Oct 2010
1 Oct 10    31 Oct 2010
1 Nov 10    01 Dec 2010
1 Dec 10    31 Dec 2010
1 Jan 09    31 Mar 2009
1 Apr 09    30 Jun 2009
1 Jul 09    01 Oct 2009
1 Oct 09    31 Dec 2009
1 Jan 10    31 Mar 2010
1 Apr 10    30 Jun 2010
1 Jul 10    01 Oct 2010
1 Oct 10    31 Dec 2010
1 Jan 09    31 Dec 2009
1 Jan 10    31 Dec 2010

以上内容包含2009年,2010年的每个月,季度和年度.

我有另外一个表,其中包括:

表2

start       end
15-12-09    31-12-09
15-01-12    31-12-13
01-01-11    31-12-13
30-01-98    31-12-13
01-01-98    31-12-13
01-01-98    31-12-13
23-12-12    31-12-13
12-11-11    31-12-13
01-01-10    31-12-13

对于表2中的每个条目,我需要找到它落入table1的可能时间范围.

例如从table2,第一个入口 –

15-12-09    31-12-09

落到:

1 Dec 09    31 Dec 2009
1 Oct 09    31 Dec 2009
1 Jan 09    31 Dec 2009

在Oracle SQL中是否可以识别它?

解决方法

简单之间应该有帮助.

首先使用两个语句来检查table1的start_date是否在table1的时间范围内,其次之间将检查table2的end_date是否也在table1的同一时间范围内.两个检查应该同时保留,所以你应该使用它们之间.

另外,作为一个包容性的“之间”的作品如下:第一个参数
它检查>或=并且对于第二参数<或=. 所以以下语句是等价的:

t2.start_date between t1.start_date and t1.end_date

t2.start_date >= t1.start_date and t2.start_date <= t1.end_date

您正在寻找的SQL将如下:

select t2.*,'->',t1.* from table2 t2,table1 t1
  where t2.start_date between t1.start_date and t1.end_date
    and t2.end_date between t1.start_date and t1.end_date

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读