我试图基于某些列在指定的时间范围内连接表.我已经尝试了几种方法并且无法解决这个问题.
我从一个简单的查询开始:
SELECT *
FROM admin.mktdmtunit c
WHERE c.unitid IN ('2756')
AND c.calledofftime between to_timestamp('2012-12-05 05:00:01','yyyy-mm-dd hh:mi:ss')
AND to_timestamp('2012-12-06 05:00:00','yyyy-mm-dd hh:mi:ss')
Run Code Online (Sandbox Code Playgroud)
返回1行.
然后我添加另一个表:
SELECT *
FROM admin.mktdmtunit c
INNER JOIN admin.mktmanualdispatch_all mrd
ON c.unitid = mrd.unitid
where c.unitid in ('2756')
AND (c.calledofftime between to_timestamp('2012-12-05 05:00:01','yyyy-mm-dd hh:mi:ss')
and to_timestamp('2012-12-06 05:00:00','yyyy-mm-dd hh:mi:ss')
OR mrd.effectivetime between to_timestamp('2012-12-05 05:00:01','yyyy-mm-dd hh:mi:ss')
and to_timestamp('2012-12-06 05:00:00','yyyy-mm-dd hh:mi:ss'))
Run Code Online (Sandbox Code Playgroud)
返回4行,基于mrd表中4个条目的unitid.但这些都与那个日期无关,所以我不希望看到这些信息.
所以我尝试了这个:
SELECT *
FROM admin.mktdmtunit c
where c.unitid in ('2756')
AND c.calledofftime between to_timestamp('2012-12-05 05:00:01','yyyy-mm-dd hh:mi:ss')
and to_timestamp('2012-12-06 05:00:00','yyyy-mm-dd …Run Code Online (Sandbox Code Playgroud)