-4
SELECT IQ, PARENT_EQ_NAME1, REASON_NAME FROM (
SELECT SUM(IQ) AS IQ, PARENT_EQ_NAME1, REASON_NAME1 AS REASON_NAME FROM
(
SELECT REASON_NAME, IQ, PARENT_EQ_NAME1, rank1,
CASE WHEN rank1 > 5 THEN 'SUM OF REMAINING' ELSE REASON_NAME END REASON_NAME1
FROM (
SELECT REASON_NAME, IQ, PARENT_EQ_NAME1, RANK() OVER(PARTITION BY PARENT_EQ_NAME1
ORDER BY IQ DESC) AS rank1
FROM (
SELECT SUM(TH.IMPACT_QTY) IQ,TH.PARENT_EQ_NAME1,TH.REASON_NAME FROM
(
select impact_qty,eq_name PARENT_EQ_NAME1,reason_name from c_maaden_vw_losses_by_area where PARENT_Eq_name=:parenteqName
AND (dvtn_start_dt_tm >= :StartDate)
AND (dvtn_end_dt_tm <= :EndDate) AND (TRGT_TYPE IN (:Type))
-- eq_name
UNION ALL
select impact_qty,parent_eq_name PARENT_EQ_NAME1, reason_name from c_maaden_vw_losses_by_area where
parent_Eq_name in (select distinct eq_name from ip_equip_hierarchy where parent_eq_name =:parenteqName )
AND (dvtn_start_dt_tm >= :StartDate)
AND (dvtn_end_dt_tm <= :EndDate) AND (TRGT_TYPE IN (:Type)) -- parent_Eq_name
UNION ALL
SELECT CA.IMPACT_QTY,
Case
when IH.parent_eq_name is null then CA.parent_eq_name
else IH.parent_eq_name end parent_EQ_NAME1,reason_name
FROM C_MAADEN_VW_LOSSES_BY_AREA CA left outer join
(select distinct t1.parent_eq_name GP_eq_name ,t2.parent_eq_name , T2.Eq_name from ip_equip_hierarchy T1, ip_equip_hierarchy T2
where T1.eq_name=t2.Parent_EQ_name and t1.parent_eq_name= :parenteqName and T1.hierarchy_typ='ASSET') IH
on CA.parent_eq_name=IH.eq_name
where CA.parent_Eq_name
in (select distinct eq_name from ip_equip_hierarchy where parent_eq_name in (select distinct eq_name
from ip_equip_hierarchy
where parent_Eq_name = :parenteqName ) ) AND (dvtn_start_dt_tm >= :StartDate)
AND (dvtn_end_dt_tm <= :EndDate) AND (TRGT_TYPE IN (:Type))
) TH
where NOT(TH.REASON_NAME='Other' AND TH.PARENT_EQ_NAME1 = :parenteqName)
AND (TH.REASON_NAME NOT IN ('DIGESTION SLURRY FEED PUMP', 'CAB TEST OR ACID CLEANING'))
GROUP BY TH.PARENT_EQ_NAME1,TH.REASON_NAME
)))
GROUP BY PARENT_EQ_NAME1, REASON_NAME1
union all
SELECT SUM(IMPACT_QTY) AS IQ,:parenteqName as PARENT_EQ_NAME1, REASON_NAME from C_MAADEN_VW_LOSSES_BY_AREA
where eq_name=:parenteqName and REASON_NAME= 'Other' AND (dvtn_start_dt_tm >= :StartDate)
AND (dvtn_end_dt_tm <= :EndDate) AND (TRGT_TYPE IN (:Type))
group by PARENT_EQ_NAME,REASON_NAME ) order by IQ DESC
귀하의 요구 사항은 무엇입니까? – Nitish
이것은 내 쿼리이며 oracle의 저장 프로 시저로 만들고 싶습니다. – sanjana
[Documentation] (https://docs.oracle.com/database/121/LNPLS/create_procedure.htm#LNPLS01373)을보십시오. 도움이 될 것입니다. – Nitish