我有这些列码表,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 –