从表中加入一个日期列与另一个表日期范围oracle 11 g

时间:2014-02-09 03:24:47

标签: sql oracle

我正在尝试从Oracle 11g数据库构建查询以在报告中使用。我需要使用两个表A和B来获取表A列日期和表列B值

表A:

Dt
01/01/2014
02/01/2014
03/01/2014
04/01/2014
05/01/2014
06/01/2014

表B:

Value      Start Dt     End Dt
XXXX       01/01/2014    03/01/2014
YYYY       05/01/2014    06/01/2014

最终输出:

A.Dt               B.Value
01/01/2014         XXXX
02/01/2014         XXXX
03/01/2014         XXXX
04/01/2014         NULL
05/01/2014         YYYY
06/01/2014         YYYY

请在单个SQL查询中帮助完成上述操作。

由于

2 个答案:

答案 0 :(得分:1)

并非所有联接都是equijoins - 您可以在加入条件中使用BETWEEN运算符。

SELECT          a.dt, b.value
FROM            a
LEFT OUTER JOIN b ON a.dt BETWEEN b.start_dt and b.end_dt

答案 1 :(得分:0)

    SELECT A.DT ,B.VALUE

FROM A

LEFT OUTER JOIN

(

SELECT START_DT,VALUE FROM B

UNION 

SELECT END_DT,VALUE FROM B

) B

ON A.DT=B.START_DT

ORDER BY A.DT

这应该会给你预期的输出。