各位帅哥,美女们:
我有一个表,字段和值为下:
code datefrom datetimeto
1 2009-10-14 2009-10-14
1 2009-10-12 2009-10-14
1 2009-10-15 2009-10-16
这个表种,CODE为一致的情况下,如何使用SQL查询,其中时间段交叉的数据条数呢.
也就是说10-14到10-14与10-15到10-16不冲突.若10-14到10-14与10-12到10-14进行比较,则交叉.
若不使用CURSOR游标,遍历取值,能实现这个功能么.我只要一个COUNT就好.
求一个SQL,高手应该很容易.
答案:1 悬赏:50 手机版
解决时间 2021-04-13 05:42
- 提问者网友:眉目添风霜
- 2021-04-12 17:21
最佳答案
- 五星知识达人网友:煞尾
- 2021-04-12 18:28
drop table test;
create table test(code int, datefrom datetime, dateto datetime)
insert into test(code, datefrom, dateto)
select
1,'2009-10-14','2009-10-14' union all select
1,'2009-10-12','2009-10-14' union all select
1,'2009-10-15','2009-10-16';
select * from test;
select t1.code, count(t1.code) '时间交叉记录行'
from test t1
where exists (
select t2.code, t2.datefrom, t2.dateto from test t2
where t2.code=t1.code and ((t1.datefrom <=t2.datefrom and t1.dateto<t2.dateto)
or (t1.datefrom <t2.datefrom and t1.dateto<=t2.dateto)) )
group by t1.code;
create table test(code int, datefrom datetime, dateto datetime)
insert into test(code, datefrom, dateto)
select
1,'2009-10-14','2009-10-14' union all select
1,'2009-10-12','2009-10-14' union all select
1,'2009-10-15','2009-10-16';
select * from test;
select t1.code, count(t1.code) '时间交叉记录行'
from test t1
where exists (
select t2.code, t2.datefrom, t2.dateto from test t2
where t2.code=t1.code and ((t1.datefrom <=t2.datefrom and t1.dateto<t2.dateto)
or (t1.datefrom <t2.datefrom and t1.dateto<=t2.dateto)) )
group by t1.code;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯