0

If the data is like this:

AsOfDate   |  Animal |  Version |  
2013/07/01 |  Cat    |    0.8   |  
2013/07/01 |  Dog    |    0.3   |  
2013/04/15 |  Cat    |    0.6   |  
2013/04/15 |  Dog    |    0.2   |  
2012/12/20 |  Cat    |    0.5   |  
2012/12/20 |  Dog    |    0.1   |  

I want to be able to specify some given date parameter, for example, 2013/5/01 and have all the rows selected that have the ONE most recent date (2013/4/15) for a result:

2013/04/15 |  Cat    |    0.6   |
2013/04/15 |  Dog    |    0.2   |
4

2 回答 2

2
    Select *
    from <TABLE NAME HERE>
    where AsOfDate = (Select Max(AsOfDate) 
                             from <TABLE NAME HERE>
                             where AsOfDate <= <INPUT DATE HERE>)
于 2013-05-16T00:10:25.840 回答
0

在我看来,OP 想要一个不在未来的最近日期,所以我建议如下:

SELECT * 
FROM TABLE 
WHERE AsOfDate = 
    (SELECT MAX(AsOfDate) 
    FROM TABLE 
    WHERE AsOfDate <= CURRENT_DATE())

请注意,CURRENT_DATE 在 SQL92 标准中(请参阅这篇 IBM 文章)并返回执行日期。

于 2013-05-16T00:23:48.253 回答