Sql server 2008 r2 根据日期选择记录

Sql server 2008 r2 根据日期选择记录,sql-server-2008-r2,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

假设数据如下:

  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的费率

换句话说,当日期介于两条记录的生效日期之间时,如何执行查询以找到正确的速率?费率应为所选日期之前的日期

谢谢, 约翰

如果我没看错的话

编辑以符合我对ms sql的想法,我对此一无所知。

这个怎么样:

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

这是一个可以玩的游戏。在这里,我假设“ID/EffDate”对对于所有表都是唯一的,至少相反的是没有意义的。

LIMIT是专有的MySQL语法,在SQL Server中无效。LIMIT在MS-SQL中是有效的子句吗?否,LIMIT在SQL Server中无效。Msg 102:LIMIT附近的语法不正确。谢谢Aaron,我刚刚看到你的评论。+1也应该有效,我想应该比我的答案更有效。同样感谢您提供的SQL小提琴技巧。
SELECT Rate 
  FROM Table1 
 WHERE ID = 1 AND EffDate = (
  SELECT MAX(EffDate) 
    FROM Table1 
   WHERE ID = 1 AND EffDate <= '2012-15-01');