简体   繁体   English

如何获得截至日期的最新记录?

[英]How do I get the most recent records based on as of date?

I have the following table: 我有下表:

+------------------------------------+
|     Number  Name     Date          |
+------------------------------------+
| 1   1050    Name1    2015-01-01    |
| 2   1051    Name2    2015-04-27    |
| 3   1057    Name3    2015-04-27    |
+------------------------------------+

How should I get the most recent records? 我应该如何获取最新记录? I've tried something like: 我已经尝试过类似的东西:

SELECT number, name, MAX(DATE) AS recent_date
FROM Recent_Table
HAVING recent_date < '2015-05-19'
GROUP BY number, name

I'm expecting to get the most recent records but instead I'm getting all three because of my having clause. 我希望获得最新的记录,但是由于我的hading子句,我得到了所有三个记录。 Is there a way to work around this while still keeping my having ? 有没有一种方法可以解决此同时仍保持我having Thanks. 谢谢。

Expected output would be: 预期输出为:

  1051    Name2    2015-04-27
  1057    Name3    2015-04-27 

Try this 尝试这个

select number, name, date
from Recent_Table
where Date = (SELECT MAX(DATE) AS recent_date
              FROM Recent_Table
              WHERE DATE < '2015-05-19')

there is problem with name column not with having clause. name列不具有having子句存在问题。 I think you don't need having . 我想,你不需要having

Sql fiddle demo SQL小提琴演示

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)
SELECT number, name, MAX(DATE) AS recent_date
FROM Recent_Table
WHERE DATE <= MAX(DATE)
GROUP BY number, name

Will return values that are the latest entries 将返回最新条目的值

Let me guess 让我猜猜

 SELECT number, name
 FROM   Recent_Table
 WHERE recent_date >= (Select Max(Date) FROM Recent_Table)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM