SQL Server使用单个日期列查找日期范围中的记录

时间:2016-11-28 17:33:37

标签: sql-server

我有一个带有生效日期字段的表A,需要确定另一个表B中的字段何时落在一个生效日期和下一个生成日期的范围之间(为了在表B中指定不同字段的值) 。例如。

A

[Effective Date]    [Cost]
----------------    ----------------    
1/1/2016            10.25
5/20/2016           11.75
B

[Service Date]      [Cost]
----------------    ----------------
3/1/2016            *should be 10.25*

问题是,可能没有“结束”生效日期。所以我也需要考虑这种可能性。任何想法都非常感激。

1 个答案:

答案 0 :(得分:0)

select 
    b.[Service Date]
  , Cost = (select top 1 a.Cost
              from a
              where a.[Effective Date] <= b.[Service Date]
              /* assuming there are other important correlating identifiers, 
                  you would add something like: */
                -- and a.[ServiceId] = b.[ServiceId]
              order by a.[Effective Date] desc
              )
from b;