簡體   English   中英

在Oracle查詢中的when語句中循環選擇案例

[英]Looping inside select case when statement in oracle query

我創建了一個工作正常的OBJECT_STATUS視圖。 但是現在我在KPI_DEFINITION表中有很多行,並且我想對EXIST條件的S​​elect查詢應用循環,以便我可以通過select查詢獲得所有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;

您必須在“ case statement”中添加“ fake”查詢。

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')
;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM