-2

假设数据如下:

  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 的费率?或者,2012 年 1 月 15 日 ID 1 的费率?

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

谢谢,约翰

4

2 回答 2

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

如果我没看错的话。

(编辑以适合我不知道的 ms-sql 的想法)。

于 2012-09-19T18:42:29.693 回答
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”对对于所有表都是唯一的(至少相反的情况没有意义)。

于 2012-09-19T18:53:44.367 回答