当日期值来自不同的表时,在左外连接中使用日期条件

时间:2017-08-15 18:13:01

标签: sql oracle

表Date_User有一列RUNDATE1,它存储日期(例如 - 2016-01-01)。可以根据用户请求更改此日期。

我正在编写下面的查询,它正在抛出错误:

Select A.NAME, B.DEPT_NAME, B.START_DATE, B.END_DATE
FROM TABLE A LEFT OUTER JOIN
     TABLE B
      ON A.DEPT_ID = B.DEPT_ID AND
         DATE_USER.RUNDATE1 BETWEEN B.START_DATE AND B.END_DATE;

上面的查询是抛出错误,因为表Date_User在左外连接中没有使用。

有人可以建议如何修改查询。

注意:这只是示例查询;原始查询有10个左外连接,需要相似类型的日期条件。

2 个答案:

答案 0 :(得分:0)

如果DATE_USER既不是TABLE A也不是表B,那么你需要对它进行额外的JOIN。

答案 1 :(得分:0)

您可以尝试:

Select A.NAME, B.DEPT_NAME, B.START_DATE, B.END_DATE
FROM TABLE A LEFT OUTER JOIN
     TABLE B
      ON A.DEPT_ID = B.DEPT_ID AND
LEFT JOIN DATE_USER ON 1 = 1 AND
         DATE_USER.RUNDATE1 BETWEEN B.START_DATE AND B.END_DATE;