oracle에는 작업 지시 합격률을 반환하는 코드가 있습니다. 기본적으로 실패 횟수 (MRB)를 취하고 처리율을 제공하기 위해 처리 된 작업 주문 수 (WO)로 나눕니다. 내가 가진 문제는 실패 (MRB)가 없으면 해당 달에 대한 수익을 얻을 수 없다는 것입니다. MRB에 장애가 발생하지 않은 경우 그 달에 100 %의 수익을 원합니다. 여기에 내가 작업하고있는 코드가있다. 기록을 위해, 나는 프로그래머가 아니다, 나는 방금 길을 따라 약간의 정보를 집어 들었다. NVL 추가를 시도했지만 도움이되지 않습니다.null 일 경우 값을 반환하십시오.
Select To_Char(MTH, 'Month') As "Month",WO, MRB,
Round(1 - (MRB/WO), 3) * 100 As "Pass Rate",
'98' As Goal
From
(
Select Trunc(g.START_DATE, 'Month') As mth,
Count(Distinct V_PDAYPROD_CRW1.PDAYPROD_ID) As WO,
Count(Distinct V_WF_HEADER_MRB.ID) As MRB
From GLPERIODS g
Left Join V_PDAYPROD_CRW1 On Trunc(g.START_DATE, 'Month') = Trunc(V_PDAYPROD_CRW1.PROD_DATE, 'Month')
Left Join V_WF_HEADER_MRB On Trunc(g.START_DATE, 'Month') = Trunc(V_WF_HEADER_MRB.OPEN_DATE, 'Month')
Inner Join ARINVT On V_PDAYPROD_CRW1.ARINVT_ID = ARINVT.ID
Where Extract(Year From g.START_DATE) = Extract(Year From SysDate)
And V_WF_HEADER_MRB.WF_TYPE_ID = '99'
And V_WF_HEADER_MRB.EPLANT_ID = 2
And ARINVT.EPLANT_ID = 2
Group By Trunc(g.START_DATE, 'Month'),
V_WF_HEADER_MRB.WF_TYPE_ID
)
Group By To_Char(MTH, 'Month'),WO,MRB,
Round(1 - (MRB/WO), 3) * 100,
'98',MTH
Order By MTH
위의 코드는 다음을 반환
MONTH | WO | MRB | Pass Rate | GOAL
September | 60 | 1 | 98.3 | 98
December | 30 | 2 | 93.3 | 98
나는 이런 식으로 뭔가를 반환하는 데 싶습니다
MONTH | WO | MRB | Pass Rate | GOAL
January | 25 | 0 | 100 | 98
February | 66 | 0 | 100 | 98
March | 35 | 0 | 100 | 98
April | 22 | 0 | 100 | 98
May | 19 | 0 | 100 | 98
June | 47 | 0 | 100 | 98
July | 52 | 0 | 100 | 98
August | 55 | 0 | 100 | 98
September | 60 | 1 | 98.3 | 98
October | 39 | 0 | 100 | 98
November | 18 | 0 | 100 | 98
December | 30 | 2 | 93.3 | 98
당신이 제공 할 수있는 모든 도움을 주셔서 감사합니다.
필터를 유지해야합니다. 99는 MRB의 유형을 나타내고 2의 eplant는 내가 찾고있는 회사 데이터를 나타냅니다 (우리는 데이터베이스 내에 2 개의 회사가 있습니다). –
표시, "조인 조건"과 동일한 필터를 사용하십시오. 이미 조인 조건에 해당 필터가 포함되어 있습니다. 위의 대답에서 쿼리를 실행하고 결과를 확인하십시오. – Manjunatha
그랬어! 정말 고맙습니다!!! –