SELECT '#OZParam.yyyy#'|| '년도 [' || CAMPUS_DIV_NM || '] 기준' AS SUBTITLE
, OCCU_NM
, MM01, MM02, MM03, MM04, MM05, MM06, MM07, MM08, MM09, MM10, MM11, MM12
, MAX(TOT) OVER() AS TOT
, TRUNC(MAX(TOT) OVER() / MAX(MCNT) OVER(), 0) AS AVGCNT
FROM (
SELECT CAMPUS_DIV_NM
, OCCU_NM
, MM01, MM02, MM03, MM04, MM05, MM06, MM07, MM08, MM09, MM10, MM11, MM12
, NVL(CASE WHEN SUM(MM01) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM02) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM03) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM04) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM05) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM06) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM07) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM08) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM09) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM10) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM11) OVER() > 0 THEN 1 ELSE 0 END, 0)
+ NVL(CASE WHEN SUM(MM12) OVER() > 0 THEN 1 ELSE 0 END, 0) AS MCNT
, SUM(TOT) OVER() AS TOT
, CAMPUS_DIV_CD, PRT_ORD, OCCU_CD
FROM (
SELECT F_CMN_CODE_NM('CMN54',NVL(CAMPUS_DIV_CD, '10')) AS CAMPUS_DIV_NM
, D2.CD_NM AS OCCU_NM
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '01' THEN 1 ELSE 0 END) AS MM01
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '02' THEN 1 ELSE 0 END) AS MM02
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '03' THEN 1 ELSE 0 END) AS MM03
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '04' THEN 1 ELSE 0 END) AS MM04
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '05' THEN 1 ELSE 0 END) AS MM05
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '06' THEN 1 ELSE 0 END) AS MM06
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '07' THEN 1 ELSE 0 END) AS MM07
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '08' THEN 1 ELSE 0 END) AS MM08
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '09' THEN 1 ELSE 0 END) AS MM09
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '10' THEN 1 ELSE 0 END) AS MM10
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '11' THEN 1 ELSE 0 END) AS MM11
, SUM(CASE WHEN TO_CHAR(BAK_DT, 'MM') = '12' THEN 1 ELSE 0 END) AS MM12
, SUM(1) AS TOT
, D1.CAMPUS_DIV_CD, D1.OCCU_CD, D2.PRT_ORD
FROM APS_MST_BAK_YMD D1
, CMN_COM_CD D2
WHERE 1=1
AND D1.YYYY = '#OZParam.yyyy#'
AND D1.STATE_CD = '10'
AND D1.CAMPUS_DIV_CD = '#OZParam.campus_div_cd#'
AND TO_CHAR(D1.BAK_DT, 'YYYYMMDD') = TO_CHAR(LAST_DAY(BAK_DT), 'YYYYMMDD')
AND D1.OCCU_CD = D2.CD
AND D2.CD_DIV = 'APS03'
GROUP BY D1.CAMPUS_DIV_CD, D1.OCCU_CD, D2.PRT_ORD, D2.CD_NM
)
)
ORDER BY CAMPUS_DIV_CD, PRT_ORD, OCCU_CD
'03.업 > 11.디비' 카테고리의 다른 글
[펌]DISTINCT 와 GROUP BY의 차이 (0) | 2021.12.29 |
---|---|
오라클 LEFT OUTER JOIN 과 LEFT JOIN (0) | 2021.12.23 |
오라클 다건 서브쿼리와 CROSS JOIN (0) | 2021.12.02 |
파람이 널인 경우 전체데이터나오게 조건절 걸기 (0) | 2021.05.13 |
sql server inner join left join (0) | 2020.10.20 |