我想基於特定時間範圍內的某些列連接表。我已經嘗試了幾種方法,並沒有能夠解決這個問題。Netezza SQL加入表,如果該表包含相關數據
我先從一個簡單的查詢:
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')
返回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'))
,基於在該單元ID的MRD表4名的條目返回4行。但是這些都與這個日期無關,所以我不想看到這些信息。
所以,我想這一點:
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')
OR (exists(SELECT mrd.effectivetime
FROM admin.mktmanualdispatch_all mrd
WHERE 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')
AND c.unitid = mrd.unitid)
但是這給出了一個錯誤說,它需要一個「」前的最後一行的‘mrd.unitid’。
所以我也試過這樣:
SELECT *
FROM admin.mktdmtunit c
INNER JOIN admin.mktmanualdispatch_all mrd
ON
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')
AND 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')
但這並不返回任何行。
所以要清楚,我想從這個特定查詢中得到的是一行,它具有基於c.calledofftime的信息並且沒有從另一個表中拉入信息,因爲沒有基於mrd有效時間的相關數據。 謝謝
因此基本上,您希望加入'mktdmtunit'和'mktmanualdispatch_all',單元ID爲2756,其中被叫停用時間爲凌晨5點至12點和12/6上午5點,發送有效時間也在上午5點的12/5和上午5點的12/6之間? –
那麼mktdmtunit是「主」表,但否則你是正確的。我實際上已經解決了這個問題,通過將最後一位代碼的內連接放在左外連接上。因爲我是新來的,所以不會讓我發佈實際的答案。 –
你應該有足夠的特權才能夠現在提交你的問題的答案。 – DMK