日期:2014-05-18 浏览次数:20423 次
create table tb(姓名 nvarchar(10),培训项目名称 nvarchar(10),培训地点 nvarchar(10),开始日期 datetime,开始时间 int,结束日期 datetime,结束时间 int) insert into tb select '张三','公务培训','北京','2009-01-03',9,'2009-01-09',17 insert into tb select '李四','公务培训','北京','2011-01-03',9,'2011-01-09',17 insert into tb select '王五','公务培训1','北京','2011-01-03',9,'2011-01-09',17 insert into tb select '赵六','公务培训1','北京','2011-01-03',9,'2011-01-09',17 insert into tb select '张三','公务培训','上海','2011-01-04',9,'2011-01-06',16 insert into tb select '王五','公务培训3','南京','2011-01-05',9,'2011-01-10',11 insert into tb select '王五','公务培训4','济南','2011-01-07',9,'2011-01-10',17 insert into tb select '张三','公务培训','杭州','2011-01-06',9,'2011-01-06',16 insert into tb select '张三','公务培训6','苏州','2011-01-09',9,'2011-01-16',17 --insert into tb select '张三','公务培训7','天津','2011-01-20',9,'2011-01-20',17 go select * from tb a where exists(select 1 from tb where 姓名=a.姓名 and (培训项目名称<>a.培训项目名称 or 培训地点<>a.培训地点) and (dateadd(hh,a.开始时间,a.开始日期) between dateadd(hh,开始时间,开始日期) and dateadd(hh,结束时间,结束日期) or dateadd(hh,a.结束时间,a.结束日期) between dateadd(hh,开始时间,开始日期) and dateadd(hh,结束时间,结束日期) or (dateadd(hh,a.开始时间,a.开始日期)<dateadd(hh,开始时间,开始日期) and dateadd(hh,a.结束时间,a.结束日期)>dateadd(hh,开始时间,开始日期)))) order by 姓名 /* 姓名 培训项目名称 培训地点 开始日期 开始时间 结束日期 结束时间 ---------- ---------- ---------- ----------------------- ----------- ----------------------- ----------- 王五 公务培训1 北京 2011-01-03 00:00:00.000 9 2011-01-09 00:00:00.000 17 王五 公务培训3 南京 2011-01-05 00:00:00.000 9 2011-01-10 00:00:00.000 11 王五 公务培训4 济南 2011-01-07 00:00:00.000 9 2011-01-10 00:00:00.000 17 张三 公务培训 杭州 2011-01-06 00:00:00.000 9 2011-01-06 00:00:00.000 16 张三 公务培训 上海 2011-01-04 00:00:00.000 9 2011-01-06 00:00:00.000 16 (5 行受影响) */ go drop table tb