基于日期的SELECT记录

时间:2012-09-19 18:40:43

标签: sql-server-2008-r2

假设数据如下:

  ID      EffDate            Rate
   1      12/12/2011         100
   1      01/01/2012         110
   1      02/01/2012         120
   2      01/01/2012          40
   2      02/01/2012          50
   3      01/01/2012          25
   3      03/01/2012          30
   3      05/01/2012          35

我如何在2012年1月15日找到ID 2的费率? 或者,1月15日的ID 1的费率?

换句话说,当日期介于两个记录的EffDate之间时,如何查找找到正确率的查询? (费率应为所选日期之前的日期)。

谢谢, 约翰

2 个答案:

答案 0 :(得分:2)

SELECT TOP 1 Rate FROM the_table
WHERE ID=whatever AND EffDate <='whatever'
ORDER BY EffDate DESC

如果我读对你的话。

(根据我对ms-sql的想法编辑,我不知道)。

答案 1 :(得分:2)

这个怎么样:

SELECT Rate 
  FROM Table1 
 WHERE ID = 1 AND EffDate = (
  SELECT MAX(EffDate) 
    FROM Table1 
   WHERE ID = 1 AND EffDate <= '2012-15-01');

这是一个SQL Fiddle。我在这里假设'ID / EffDate'对所有表都是唯一的(至少相反没有意义)。