昨夜小楼??再求 一个SQL语句
当输入一个日期时,想查出输入日期落在哪个 適用開始日-適用終了日 之间,
并且将其之前或之后的 適用開始日-適用終了日 也查出来。如果输入日期没有落在任何適用開始日-適用終了日 之间,就将其之前或之后的 適用開始日-適用終了日 也查出来。
预想结果: 输入日期为: 20040101
職員番号 適用開始日 適用終了日 過去開始日 過去終了日 未来開始日 未来終了日
100 20010101 20050101 19960101 20000101 20050101 20100101
200 20050101 20100101
300 19900101 19950101
400 19960101 20000101 20050101 20100101
表1
職員番号,適用開始日 是主键
職員番号 適用開始日 適用終了日
100 19900101 19950101
100 19960101 20000101
100 20010101 20050101
100 20050101 20100101
100 20100101 20150101
200 20050101 20100101
200 20100101 20150101
300 19900101 19950101
400 19900101 19950101
400 19960101 20000101
400 20050101 20100101
400 20100101 20150101
不知道能不能查出这样的结果,谢谢!
------解决方案--------------------如果输入日期没有落在任何適用開始日-適用終了日 之间,就将其之前或之后的 適用開始日-適用終了日 也查出来。
是之前和之后都要,还是只要一个.你的结果没看明白.
------解决方案----------------------原始数据:@1
declare @1 table(EmpID int,Start bigint,Stop bigint)
insert @1
select 100, '19900101 ', '19950101 ' union all
select 100, '19960101 ', '20000101 ' union all
select 100, '20010101 ', '20050101 ' union all
select 100, '20050101 ', '20100101 ' union all
select 100, '20100101 ', '20150101 ' union all
select 200, '20050101 ', '20100101 ' union all
select 200, '20100101 ', '20150101 ' union all
select 300, '19900101 ', '19950101 ' union all
select 400, '19900101 ', '19950101 ' union all
select 400, '19960101 ', '20000101 ' union all
select 400, '20050101 ', '20100101 ' union all
select 400, '20100101 ', '20150101 '
/*
EmpID -> 職員番号
Start -> 適用開始日
Stop -> 適用終了日
*/
declare @Date bigint
set @Date = 20040101
select <