我在SQL中有一个要求,我必须从日期列表中检查最接近的日期。例如:从下面的数据中,我必须检查日期" 2020-03-21"
数据:
name date
abc 2020-03-20
abc 2020-03-21
abc 2020-03-23
def 2020-03-20
def 2020-03-24
预期:
name date expected
abc 2020-03-20 2020-03-21
abc 2020-03-21 2020-03-21
abc 2020-03-23 2020-03-21
def 2020-03-22 2020-03-22
def 2020-03-24 2020-03-22
基于以前的帖子,使用orderby datediff和rownum,我能够以正确的顺序获取rownum,但是有点像如何在名称级别获取最接近的日期。
您可以为此使用子查询:
select
t.*,
(
select top 1 t1.date
from mytable t1
where t1.name = t.name
order by abs(datediff(d, t1.date, '2020-03-21')), t.date
) expected
from mytable t