如果数据是这样的:
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 |
我希望能够指定一些给定的日期参数,例如2013/5/01,并选择具有最近一个日期(2013/4/15)的所有行作为结果:
2013/04/15 | Cat | 0.6 |
2013/04/15 | Dog | 0.2 |
答案 0 :(得分:2)
Select *
from <TABLE NAME HERE>
where AsOfDate = (Select Max(AsOfDate)
from <TABLE NAME HERE>
where AsOfDate <= <INPUT DATE HERE>)
答案 1 :(得分:0)
在我看来,OP希望最近的日期不会在将来,所以我建议如下:
SELECT *
FROM TABLE
WHERE AsOfDate =
(SELECT MAX(AsOfDate)
FROM TABLE
WHERE AsOfDate <= CURRENT_DATE())
请注意,CURRENT_DATE符合SQL92标准(请参阅this IBM article)并返回执行日期。