2014-01-14 35 views
0

我想添加一個Or子句到我的where語句並可以使用一點幫助。哪裏使用And&Or

這是我有:

Where 
    W.Insured_Id = P.Insured_Id and 
    P.Insured_Id = I.Insured_Id and 
    I.Insured_Id = IU.Insured_Id and 
    p.expiration_date > to_date ('30-Apr-2014','dd-mm-yyyy') and 
    p.expiration_date < to_date ('16-Dec-2014','dd-mm-yyyy') or  
    p.expiration_date > to_date ('15-Dec-2013','dd-mm-yyyy') and 
    p.expiration_date < to_date ('01-May-2014','dd-mm-yyyy') and 
    p.annual_premium < '1000' or 
    p.expiration_date > to_date ('15-Dec-2014','dd-mm-yyyy') and 
    p.expiration_date < to_date ('01-Jan-2015','dd-mm-yyyy') and 
    p.annual_premium < '1000' 

我想回來,5月1日和12月15日僅在地價爲今年剩餘時間小於1000政策之間的所有政策。

讓我知道我是否可以提供更多信息。

謝謝你的幫助!

回答

0

所以,這有點令人困惑,因爲你的代碼表明你正在嘗試做一些與你所要求的不同的東西。爲了完成你問什麼,你要的線沿線的做一些事情:

Where 
W.Insured_Id = P.Insured_Id and 
P.Insured_Id = I.Insured_Id and 
I.Insured_Id = IU.Insured_Id and 
p.expiration_date > to_date ('15-Dec-2013','dd-mm-yyyy') and 
p.expiration_date < to_date ('01-May-2014','dd-mm-yyyy') and 
p.annual_premium < '1000' 

哪些應該annual_premium < 1000 2013年12月15日和2014年5月1日之間返回的所有記錄。包括你的代碼可以修改使用括號正是如此工作:

Where 
W.Insured_Id = P.Insured_Id and 
P.Insured_Id = I.Insured_Id and 
I.Insured_Id = IU.Insured_Id and 
(
    (
     p.expiration_date > to_date ('30-Apr-2014','dd-mm-yyyy') and 
     p.expiration_date < to_date ('16-Dec-2014','dd-mm-yyyy') 
    ) 
    or 
    (
     p.expiration_date > to_date ('15-Dec-2013','dd-mm-yyyy') and 
     p.expiration_date < to_date ('01-May-2014','dd-mm-yyyy') 
    ) 
    or 
    (
     p.expiration_date > to_date ('15-Dec-2014','dd-mm-yyyy') and 
     p.expiration_date < to_date ('01-Jan-2015','dd-mm-yyyy') 
    ) 
    or 
    (
     p.expiration_date > to_date ('15-Dec-2014','dd-mm-yyyy') and 
     p.expiration_date < to_date ('01-Jan-2015','dd-mm-yyyy') 
    ) 
) 
and p.annual_premium < '1000' 

然而,那將包括一堆相比,你的要求是什麼記錄。簡化後,由於重疊日期,此代碼與此相同:

Where 
W.Insured_Id = P.Insured_Id and 
P.Insured_Id = I.Insured_Id and 
I.Insured_Id = IU.Insured_Id and 
p.expiration_date > to_date ('15-Dec-2013','dd-mm-yyyy') and 
p.expiration_date < to_date ('01-Jan-2015','dd-mm-yyyy') and 
p.annual_premium < '1000' 
+0

這真是太棒了,我很抱歉,我認爲試圖通過這個我更困惑我自己(顯然不難做)。我需要退還的是2013年12月16日至2014年4月31日之間的所有保單,以及全年的所有其他保單。我能夠在你的答案幫助下解決它!再次感謝你!!! – Brad

0

你需要圍繞OR條款與bracketes和支架之間使用:

(...或...)和(...或...)...

+0

有沒有可能將它們扔到他們應該去的地方?我試圖在我身邊做得不成功。再次感謝你! – Brad