Sql 如何根据截止日期获取最新记录?
我有下表:Sql 如何根据截止日期获取最新记录?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有下表: +------------------------------------+ | Number Name Date | +------------------------------------+ | 1 1050 Name1 2015-01-01 | | 2 1051 Name2 2015-04-27 | | 3 1057 Name3 2015-04-27 | +---------
+------------------------------------+
| Number Name Date |
+------------------------------------+
| 1 1050 Name1 2015-01-01 |
| 2 1051 Name2 2015-04-27 |
| 3 1057 Name3 2015-04-27 |
+------------------------------------+
如何获取最新的记录?我试过这样的方法:
SELECT number, name, MAX(DATE) AS recent_date
FROM Recent_Table
HAVING recent_date < '2015-05-19'
GROUP BY number, name
试试这个
select number, name, date
from Recent_Table
where Date = (SELECT MAX(DATE) AS recent_date
FROM Recent_Table
WHERE DATE < '2015-05-19')
名称列不包含子句有问题。我想你不需要有
演示
将返回最新条目的值让我猜猜
SELECT number, name
FROM Recent_Table
WHERE recent_date >= (Select Max(Date) FROM Recent_Table)
您可以在何处添加预期的输出?我想您的意思是,何处日期=从最近的表格中选择MaxDate,或者这个变体实际上是samenot。您将在HAVING子句中得到一个错误列“recent_date”无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。好的,对不起,我没有环境来检查它,我将进行更新
SELECT number, name, MAX(DATE) AS recent_date
FROM Recent_Table
WHERE DATE <= MAX(DATE)
GROUP BY number, name
SELECT number, name
FROM Recent_Table
WHERE recent_date >= (Select Max(Date) FROM Recent_Table)
SELECT
number,
name,
DATE AS recent_date
FROM Recent_Table
WHERE DATE = (SELECT MAX(t2.DATE)
FROM Recent_Table t2
WHERE t2.number = t1.number)