我在SQL Server中有一个表,其中包含由BusinessDataDate组织的数据。 BusinessDataDate仅是日期(没有时间部分),并且仅在工作日填充。例如不是周末或公众假期。

因为对此没有特定的顺序,所以我想找到date before the current max date

该查询有效,我可以将值设置为局部变量-但是感觉必须有一种更简洁的方法?

SELECT MAX(BusinessDataDate) FROM myTable
  WHERE BusinessDataDate < (SELECT MAX(BusinessDataDate) FROM myTable)


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

最佳答案

与您的原始查询类似,但是如何使用前1名呢?

SELECT Top 1 BusinessDataDate
FROM myTable
WHERE BusinessDataDate < (SELECT MAX(BusinessDataDate) FROM myTable)
ORDER BY BusinessDataDate DESC

07-24 09:37