Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何根据截止日期获取最新记录?_Sql_Sql Server_Tsql - Fatal编程技术网

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)