2014-04-11 68 views
0

在Oracle中,我有兩個表,其中一個表具有secvicepoint連接標記歷史記錄,另一個表具有讀取數據。具有多個日期範圍的日期

SRVCPOINT table 

SPID STARTDATE  STOPDATE  COMPANY 
30  13-APR-2001 25-MAR-2002  UKPOWER 
30  18-APR-2005 25-MAR-2006  UKPOWER 


READING Table 

READID SPID READSTART  READSTOP 
16  30  13-JAN-2001 12-APR-2001 
23  30  13-APR-2001 25-JAN-2002 
24  30  26-JAN-2001 24-MAR-2002 
53  30  26-MAR-2002 25-MAR-2003 
65  30  13-APR-2004 25-MAR-2004 
74  30  20-APR-2005 25-MAR-2006 
86  30  25-APR-2006 25-MAR-2007 

我想刪除讀取時的服務不是由UKPOWER,即READID 16,53,65,86給出了其在此期間拍攝。 我試過READSTART not between STARTDATE and STOPDATE and READTOP not between STARTDATE and STOPDATE, 但它忽略了只讀16和53,65,86。我的意思是比較日期與只有第一個日期範圍不與其他人。

任何人都可以幫忙嗎?

回答

1

如果我沒有理解好你所需要的條件是一樣的東西

(ReadStart BETWEEN StartDate AND StopDate) 
AND (ReadStop BETWEEN StartDate AND StopDate) 

對於行外,你可以在同一個否定這個

NOT((ReadStart BETWEEN StartDate AND StopDate) 
    AND (ReadStop BETWEEN StartDate AND StopDate)) 

或者這

ReadStop < StartDate OR ReadStart > StopDate 
+0

我想要選擇其他讀取。不能刪除UKPOWER激活時所讀的內容。 – user3523768