从三个不同的查询中获取最大数量

Tec*_*hie 0 sql oracle

我有3个查询,根据条件检索最大值.

select max(to_number(substr(attr_value,9)))+1 
  from circ_inst inner
  join circ_attr_settings 
    on circ_inst.circ_inst_id=circ_attr_settings.circ_inst_id 
   and val_attr_inst_id=1045 
 where circ_attr_settings.attr_value like 'IPANEMA-%' 



select max(to_number(substr(attr_value,10)))+1 
  from circ_inst inner
  join circ_attr_settings 
    on circ_inst.circ_inst_id=circ_attr_settings.circ_inst_id 
   and val_attr_inst_id=1045 
 where circ_attr_settings.attr_value like 'FIREWALL-%'



select max(to_number(substr(attr_value,16)))+1 
  from circ_inst 
 inner join circ_attr_settings
    on circ_inst.circ_inst_id=circ_attr_settings.circ_inst_id
   and val_attr_inst_id=1045 
 where circ_attr_settings.attr_value like 'LAYER2 SWITCH-%'
Run Code Online (Sandbox Code Playgroud)

我想从这3个查询中获得最大数量(如果3个查询的结果分别是6430,6434和6418,那么我想获得值"6434",这是三个结果中的最大值.

我尝试过max(query1,query2,query3)但没有成功.

Gor*_*off 5

我想你可以用一个查询来做到这一点:

select max(to_number(substr(attr_value,instr(attr_value, '-')+1)))+1
from circ_inst inner join
     circ_attr_settings
     on circ_inst.circ_inst_id=circ_attr_settings.circ_inst_id and
        val_attr_inst_id=1045
where circ_attr_settings.attr_value like 'LAYER 2 SWITCH-%') or
      circ_attr_settings.attr_value like 'IPANEMA-%' or
      circ_attr_settings.attr_value like 'FIREWALL-%'
Run Code Online (Sandbox Code Playgroud)

你的联盟看起来都是一样的.唯一的区别是提取数字.您可以通过在值中查找" - "来获得正确的起始位置.