在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |