我正在尝试从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查询中帮助完成上述操作。
由于
答案 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
这应该会给你预期的输出。