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');