我有這些列碼錶,licenseno,授權類型,dateeffective,expirydate獲取所有無可用查詢Oracle
和每個代碼至少有4個不同的licensetypes。我想首先顯示至少一個許可證類型的expirydate通過當前日期的不可用行。困難的部分是,對於每種許可證類型,我可以續訂其expirydate。下面是一個例子表值:
2 A 4 1-Jan-2014 1-Jan-2015
2 A 4 1-Jan-2013 1-Jan-2014
2 A 3 1-Jan-2014 1-Jan-2015
2 A 2 1-Jan-2013 9-Jun-2014
2 A 1 1-Jan-2013 10-May-2014
3 B 4 1-Jan-2013 9-Oct-2014
3 B 4 13-Jun-2013 6-Jan-2014
3 B 2 6-Jan-2014 3-Mar-2014
3 B 2 10-Feb-2014 5-Mar-2014
13 C 2 1-Jan-2014 1-Jan-2015
13 C 1 1-Jan-2013 1-Jan-2014
3000115 D 1 1-Jan-2014 1-Jan-2015
3000217 E 3 1-Jan-2012 1-Jan-2013
3000222 F 2 1-Jan-2014 1-Jan-2015
3000222 F 4 1-Jan-2014 1-Jan-2015
3000223 G 2 1-Jan-2011 1-Jan-2012
因此,例如所述一個與licenseno「4」它已經在「1-JAN-2014」過期,但延長到「1-JAN-2015代碼「2」 」。因此,整個代碼'2'不會有任何被認爲不可用的字段,因爲每個代碼的每個許可證類型的所有最後日期都沒有通過。
所以我想所有的代碼是不可用的。如果任何許可證類型已過期,則整個代碼將被視爲不可用。
我寫了這個爲開端,但它只能如果我知道,並通過手動的代碼是不是我所需要:
select distinct code
from licenserevisions
where expirydate<sysdate and code='3' and (select count(code) from licenserevisions where expirydate>sysdate and code='3')=0
預期的輸出應該是這樣的:
code
3
13
3000217
3000223
任何想法的人?
你可以把預期的輸出呢? – San
ive添加了預期的輸出並更改了我給你的值m8 –