什么是在SQL中找到"下一个但最新的"日期的最佳方法?

Blu*_*ppy 5 sql t-sql sql-server-2008

我在SQL Server中有一个表,用于保存由BusinessDataDate组织的数据.BusinessDataDate仅为日期(无时间组件),仅在工作日填充.例如,不是周末或公众假期.

因为没有具体的订单,我想找到 date before the current max date

这个查询有效,我可以将值设置为局部变量 - 但感觉必须有一个更清洁的方式?

SELECT MAX(BusinessDataDate) FROM myTable 
  WHERE BusinessDataDate < (SELECT MAX(BusinessDataDate) FROM myTable)
Run Code Online (Sandbox Code Playgroud)

每个日期在表中都有多行 - 确切的数字是不可预测的.

Ric*_*Ric 2

与您的原始查询类似,但使用 top 1 怎么样?

SELECT Top 1 BusinessDataDate 
FROM myTable 
WHERE BusinessDataDate < (SELECT MAX(BusinessDataDate) FROM myTable)
ORDER BY BusinessDataDate DESC
Run Code Online (Sandbox Code Playgroud)