假设数据如下:
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之间时,如何查找找到正确率的查询? (费率应为所选日期之前的日期)。
谢谢, 约翰
答案 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'对所有表都是唯一的(至少相反没有意义)。