gpt4 book ai didi

sql-server - T-SQL - 获取最近的日期和最近的 future 日期

转载 作者:行者123 更新时间:2023-12-04 08:29:10 27 4
gpt4 key购买 nike

假设下面的记录表

ID    Name       AppointmentDate
-- -------- ---------------
1 Bob 1/1/2010
1 Bob 5/1/2010
2 Henry 5/1/2010
2 Henry 8/1/2011
3 John 8/1/2011
3 John 12/1/2011

我想按人检索最近的约会日期。所以我需要一个查询来提供以下结果集。
1   Bob    5/1/2010 (5/1/2010 is most recent)
2 Henry 8/1/2011 (8/1/2011 is most recent)
3 John 8/1/2011 (has 2 future dates but 8/1/2011 is most recent)

谢谢!

最佳答案

假设您说“最近”的意思是“最近”,例如“存储日期是距当前日期最少的天数,我们不关心它是在当前日期之前还是之后”,那么应该这样做(可能需要简单的调试):

SELECT ID, Name, AppointmentDate
from (select
ID
,Name
,AppointmentDate
,row_number() over (partition by ID order by abs(datediff(dd, AppointmentDate, getdate()))) Ranking
from MyTable) xx
where Ranking = 1

这使用 SQL 2005 及更高版本的 row_number() 函数。子查询根据规范“排序”数据,主查询选择最合适的。

另请注意:
  • 搜索基于当前日期
  • 我们只计算天数差异,忽略时间(小时、分钟等)
  • 如果两天是等距的(比如之前 2 天和之后 2 天),我们随机选择一个

  • 所有这些都可以根据您的最终要求进行调整。

    关于sql-server - T-SQL - 获取最近的日期和最近的 future 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346483/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com