Цикл внутри выбора, когда оператор в запросе оракула

Я создал OBJECT_STATUS вид который работает нормально. Но теперь у меня есть много строк в KPI_DEFINITION таблица, и я хочу применить цикл для запроса выбора, где EXIST состояние присутствует, так что я получу все KPI_DEF_ID с помощью запроса выбора, и я установлю 'N', Но не знаю, как это сделать. Можно ли зациклить внутри CASE WHEN заявление.

    CREATE OR REPLACE FORCE VIEW "RATOR_MONITORING"."OBJECT_STATUS" ("OBJECT_TYPE", "OBJECT_ID", "OBJECT_STATUS") AS 
      select "OBJECT_TYPE"
       ,"OBJECT_ID"
       ,"OBJECT_STATUS"
  from (select 'EVENT' as object_type
              ,os.event_id as object_id
              ,case
                  when not exists (select kd.kpi_def_id
                          from rator_monitoring_configuration.kpi_definition kd
                         where kd.event_id = os.event_id
                           and kd.kpi_type in (19, 21)) then
                   'N'
                  when exists (select kd.kpi_def_id
                          from rator_monitoring_configuration.kpi_definition kd
                         where kd.event_id = os.event_id
                           and kd.kpi_type in (19, 21)
                           and (kd.kpi_active_initial = 'N' or kd.kpi_active_current = 'N' or
                               kd.kpi_active_manual = 'N' or kd.kpi_active_downtime = 'N')) then
                   'N'
                  else
                   os.status
               end as object_status
          from event_status os)
 order by object_type
         ,decode(object_status, 'N', 1, 'R', 2, 'Y', 3, 'G', 4, 5)
         ,object_id;

1 ответ

Вы должны добавить "поддельный" запрос в "case case".

select object_name,object_type,
  case when 1 in (select 1 from dual where EXISTS (select 1 from user_tables tab where tab.table_name = obj.object_name)) 
  then 'IS_TABLE'
  when  1 in (select 1 from dual where not EXISTS (select 1 from user_tables tab where tab.table_name = obj.object_name)) 
  then 'NO_TABLE'
  else 'END' end case_with_exist
from user_objects obj
where object_type in ('TABLE','INDEX')
;
Другие вопросы по тегам