select * from tb a
where exists(
select 1 from tb
where 請假類型<>a.請假類型 and
(工號=a.工號
and 請假開始日期時間=a.請假開始日期時間
and 請假結束日期時間=a.請假結束日期時間
or
工號=a.工號
and a.請假開始日期時間
between 請假開始日期時間 and 請假結束日期時間))
where exists(
select 1 from tb
where 請假類型<>a.請假類型 and
(工號=a.工號
and 請假開始日期時間=a.請假開始日期時間
and 請假結束日期時間=a.請假結束日期時間
or
工號=a.工號
and a.請假開始日期時間
between 請假開始日期時間 and 請假結束日期時間))
解决方案 »
- 一道有趣的C語言題目!
- [提个最简单的问题]在那张系统表中能看到所有的数据库
- sql server上网的问题(高分请教)
- C# 在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。
- 菜鸟请问大力:
- 分页显示的问题
- 我在SQL数据库中用户无法使用
- 有哪位知道Sql Server2000中关于字段的描述存放在哪里,我在企业管理器中输过了一次,现在想在文档中加入字段描述,不想再输了:)
- 菜鸟求救?SOS!
- sql 循环
- SQL Server 2005 Beta 2 汉字数据简繁转换实例 (CLR,Assemblies)
- 問一個函數(將字符串轉為整數的)?
--测试--测试数据
create table tb(工號 varchar(10),請假開始日期時間 datetime,請假結束日期時間 datetime,請假類型 char(1))
insert tb select 'A001','2004-07-01 12:00','2004-07-01 18:00','A'
union all select 'A001','2004-07-01 12:00','2004-07-01 18:00','B'
union all select 'A001','2004-07-01 17:00','2004-07-01 22:00','C'
union all select 'B001','2004-07-02 12:00','2004-07-02 17:00','B'
union all select 'C001','2004-07-03 12:00','2004-07-03 19:00','C'
go--查询
select * from tb a
where exists(
select 1 from tb
where 請假類型<>a.請假類型 and
(工號=a.工號
and 請假開始日期時間=a.請假開始日期時間
and 請假結束日期時間=a.請假結束日期時間
or
工號=a.工號
and a.請假開始日期時間
between 請假開始日期時間 and 請假結束日期時間))
go--删除测试
drop table tb/*--测试结果工號 請假開始日期時間 請假結束日期時間 請假類型
---------- ------------------------ ------------------------ ---------
A001 2004-07-01 12:00:00.000 2004-07-01 18:00:00.000 A
A001 2004-07-01 12:00:00.000 2004-07-01 18:00:00.000 B
A001 2004-07-01 17:00:00.000 2004-07-01 22:00:00.000 C(所影响的行数为 3 行)
--*/
A001 2004-07-01 12:00 2004-07-01 18:00 A 有重復
A001 2004-07-01 17:00 2004-07-01 22:00 A 時間交叉
where (
select COUNT(*) from T_AEMPH
where
(EMPCODE=a.EMPCODE
and DATETIMEF=a.DATETIMEF
and DATETIMET=a.DATETIMET
or
EMPCODE=a.EMPCODE
and a.DATETIMEF
between DATETIMEF and DATETIMET)) >1