如何查找冲突日期的计数



我想限制用户在下表中已经存在的开始和结束日期之间输入开始和结束日期。

例如:用户尝试插入日期开始日期 2/6/2012

和结束日期 4/6/2012;此日期位于下表中的事件 e2 之间,因此不允许用户插入它。

 ------------------------------------------------------------------------
 id               event               startdate    enddate
 ------------------------------------------------------------------------
 11                e1                 31/5/2012    1/6/2012
 12                e2                 1/6/2012     4/6/2012
 13                e3                 5/6/2012     6/6/2012
 14                e4                 15/6/2012    16/6/2012

我想查找与其他事件冲突的事件的计数。

select tbl.startdate, count(tbl.startdate)
from YourTable tbl
where 
exists(select * from YourTable tbl2 where ((tbl2.startdate>=tbl.startdate AND tbl2.startdate<=tbl.enddate) OR (tbl2.enddate>=tbl.startdate AND tbl2.enddate<=tbl.enddate)))
group by tbl.startdate

最新更新