根据每行条件加入

时间:2014-02-18 10:35:28

标签: sql sql-server join

我有一张桌子:

|testNr    |date        | 
|1         | 2014-01-01 |
|2         | 2014-01-03 |
|3         | 2014-01-03 |

另一个像:

|finalID   | testNr     | from_date   |to_date 
|1         | 1          | 2013-12-01  |2013-12-20
|2         | 1          | 2013-12-25  |2014-01-05
|3         | 2          | 2014-01-01  |2014-01-05

我想从第二个表中查找finalID并将其与第一个表连接起来。值得注意的是,第一列中的date位于第二列中的日期范围之间。

我想最终:

|testNr    |date        | finalID
|1         | 2014-01-01 | 2
|2         | 2014-01-03 | 3
|3         | 2014-01-03 | NULL

我正在使用SQL服务器。关于如何处理这个的任何想法?

3 个答案:

答案 0 :(得分:1)

我认为这就是你想要的

select t1.testNr, t1.date, t2.finalID
from table1 t1 left join table2 t2
on t1.testNr=t2.testNr and t1.date between t2.from_date and t2.to_date

fiddle

答案 1 :(得分:0)

使用以下

 SELECT t1.*, t2.finalID 
 FROM table1 t1
 LEFT JOIN table2 t2 on t1.testNR=t2.testNR and t1.[date] between t2.from_date and t2.to_date

SQLFIddle

答案 2 :(得分:0)

SELECT T1.*,T2.FINALID FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T1.TESTNR=T2.TESTNR
AND T1.DATE BETWEEN T2.FROM_DATE AND T2.TO_DATE