Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 失踪一个月_Sql - Fatal编程技术网

Sql 失踪一个月

Sql 失踪一个月,sql,Sql,我有这样的结果集 DT_START DT_END ------------- ----------- 2013-05-01 2014-04-01 2014-07-01 2015-04-01 2014-11-01 2015-02-01 我有开始日期和结束日期。我需要两个日期都缺少2014年的月份。 2014年缺少的月份是5和6(这是第一行“DT_结束”和第二行“DT_开始”之间的差异)一个可能的解决方

我有这样的结果集

DT_START      DT_END            
 ------------- ----------- 
 2013-05-01    2014-04-01       
 2014-07-01    2015-04-01       
 2014-11-01    2015-02-01   
我有开始日期和结束日期。我需要两个日期都缺少2014年的月份。 2014年缺少的月份是5和6(这是第一行“DT_结束”和第二行“DT_开始”之间的差异)

一个可能的解决方案:

创建日历表或进行查询,返回最低dt_开始和最高dt_结束之间的所有月份。如何做到这一点将取决于实际使用的数据库——有些数据库具有很好的函数,可以用来创建序列,有些数据库具有数字表等

然后将其用作源,并与表进行左联接,过滤掉dt_start为null的行

select month from all_months -- this is the table/query with all months
left join your_table on month between dt_start and dt_end
where dt_start is null

澄清i/o。2014年缺失的月份是5月和6月,而…开始日期和结束日期是日期范围。我想知道在这些范围内,2014年的哪个月缺失或未涵盖。您真的在使用mysql、oracle、sql-server-2008和db2吗?垃圾标签不会让你的问题变得更好;相反,这会让情况变得更糟,因为问题很可能需要为特定数据库量身定制的解决方案……您需要一个带有年/月值的帮助表。@jpw我需要任何数据库中的解决方案