IF I_TOTAL_GB = 'G' THEN OPEN O_RC1 FOR SELECT (SELECT COM_NM FROM OCS.ZMM_COM_CD WHERE COM_CD = A.DOC_GB AND DIV_CD = 'DOC_GB') DOC_GB ,A.DOC_INST_NM ,COUNT(*) DOC_TOT ,(SELECT COUNT(*) FROM MET_DOC_MGT WHERE DOC_FNSH_YN = 'C' AND DOC_YY = A.DOC_YY AND DOC_GB = A.DOC_GB AND DOC_INST_NM = A.DOC_INST_NM) DOC_FNSH_REQ ,(SELECT COUNT(*) FROM MET_DOC_MGT WHERE DOC_FNSH_YN = 'E' AND DOC_YY = A.DOC_YY AND DOC_GB = A.DOC_GB AND DOC_INST_NM = A.DOC_INST_NM) DOC_FNSH_FIN FROM MET_DOC_MGT A WHERE A.DOC_YY = I_DOC_YY GROUP BY A.DOC_GB ,A.DOC_INST_NM,A.DOC_YY,A.DOC_GB ORDER BY 1,2 ; ELSIF I_TOTAL_GB = 'D' THEN OPEN O_RC1 FOR SELECT (SELECT COM_NM FROM OCS.ZMM_COM_CD WHERE COM_CD = A.DOC_GB AND DIV_CD = 'DOC_GB') DOC_GB ,A.DOC_DEPT_NM ,COUNT(*) DOC_TOT ,(SELECT COUNT(*) FROM MET_DOC_MGT WHERE DOC_FNSH_YN = 'C' AND DOC_YY = A.DOC_YY AND DOC_GB = A.DOC_GB AND DOC_DEPT_NM = A.DOC_DEPT_NM) DOC_FNSH_REQ ,(SELECT COUNT(*) FROM MET_DOC_MGT WHERE DOC_FNSH_YN = 'E' AND DOC_YY = A.DOC_YY AND DOC_GB = A.DOC_GB AND DOC_DEPT_NM = A.DOC_DEPT_NM) DOC_FNSH_FIN FROM MET_DOC_MGT A WHERE A.DOC_YY = I_DOC_YY GROUP BY A.DOC_GB ,A.DOC_DEPT_NM,A.DOC_YY,A.DOC_GB ORDER BY 1,2 ; END IF ;
안녕하십니까~ 좋은 아침 입니다. 아침 댓바람부터 질문 하나 드리겠습니다!
제가 집계쿼리를 짜는데 그룹바이를 하는데 있어 궁금한게 있습니다.
테이블은 MET_DOC_MGT 한테이블에 관한 집계이며 이 테이블에서 DOC_GB,DOC_INST_NM별
각각 DOC_FNSH_YN = 'C'의 카운트와 'E'의 카운트 결과를 내고싶습니다.일딴 어거지로
짜서 결과값은 나오는거 같은데 DOC_INST_NM과 DOC_DEPT_NM이 널값이면
DOC_FNSH_YN에 대한 카운트가 집계되지 않습니다..
그리고 들어오는 파라미터 값에 따라 다르게 그룹바이 처리를 하고싶은데(일딴은 분기문으로 처리했습니다. 근데 지저분해서....)
어떻게 하는지도 궁금하구요.. 도움 부탁드립니다!
감사합니다.
* 추가로 스키마는 이러합니다
SELECT b.com_nm doc_gb_nm , DECODE(i_total_gb, 'G', doc_inst_nm, 'D', doc_dept_nm) doc_inst_dept_nm , COUNT(*) doc_tot , COUNT(DECODE(doc_fnsh_yn, 'C', 1)) doc_fnsh_req , COUNT(DECODE(doc_fnsh_yn, 'E', 1)) doc_fnsh_fin FROM met_doc_mgt a , ocs.zmm_com_cd b WHERE b.com_cd = a.doc_gb AND b.div_cd = 'DOC_GB' AND a.doc_yy = i_doc_yy GROUP BY b.com_nm , DECODE(i_total_gb, 'G', doc_inst_nm, 'D', doc_dept_nm) ORDER BY doc_gb_nm, doc_inst_dept_nm ;