I have a table A as

ID   Settle Date
 1     1/15/2013
 2     2/15/2013

and Table B as

ID     From           Rate 
 1   1/1/2013          1.5
 1   2/1/2013          2
 2   1/1/2013          4
 2   2/1/2013          5

I want a join such that i get

ID   Settle Date   Rate
 1    1/15/2013     1.5
 2    2/15/2013      5

Basically, want to get the rate applicable for the date. Please advise

有帮助吗?

解决方案

Use BETWEEN in your join:

select
    a.ID 
    SettleDate,
    Rate
FROM TableA a
INNER JOIN TableB b
  ON a.SettleDate BETWEEN b.From AND b.To
  AND a.ID = b.ID

OK Adjusting for your "small" change (which isn't small):

select
    a.ID 
    SettleDate,
    Rate
FROM TableA a
INNER JOIN TableB b
  ON a.ID = b.ID
  AND b.[From] = (SELECT MAX([From]) FROM TableB WHERE ID = a.ID AND From <= a.SettleDate)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top