Kal*_*kov 2 sql sql-server datetime
我有这样的表:
Number |Status |Start_Date
------------------------------------
A |Active |2016-11-29 22:51
A |blocked |2016-12-20 22:51
A |Active |2017-01-09 22:51
A |blocked |2017-01-29 22:51
Run Code Online (Sandbox Code Playgroud)
我的目标是当我宣布日期时,找到A号码的状态
例如:
Declare @Date varchar(25)='2017-01-10 12:40'
Run Code Online (Sandbox Code Playgroud)
结果:
Number |Status |Date
------------------------------------
A |Active |2017-01-10 12:40
Run Code Online (Sandbox Code Playgroud)
因为2017-01-10 12:40是间2017-01-09 22:51和 2017-01-29 22:51
则状态Active
但我不知道如何找到申报日期的状态
您可以通过执行以下操作找到单个"数字"的状态:
select top 1 t.*
from likethis t
where t.date <= @date
order by t.date desc;
Run Code Online (Sandbox Code Playgroud)
如果你想对所有"数字"执行此操作,那么你可以使用row_number():
select t.*
from (select t.*,
row_number() over (partition by t.number order by t.date desc) as seqnum
from likethis t
where t.date <= @date
) t
where seqnum = 1;
Run Code Online (Sandbox Code Playgroud)