안녕하세요 값이 출력은 되는데 제가 원하는데로 나오지 않아.. 질문 드립니다.
SELECT '0' CHK ,C.SUBORG_CODE AS USER_SUBORG_CD ,C.DEPTCD AS DEPT_CD ,(SELECT FN2_GET_DEPTNAME( C.DEPTCD ) FROM DUAL) AS USER_DEPT_NM ,B.PROC_ID AS PROC_ID ,B.PROC_NM AS PROC_NM ,A.NAME AS USER_NM ,A.USERID AS USER_ID ,A.EDU_TP_CD AS EDU_TP_CD ,A.ISU_FLAG AS ISU_FLAG ,A.START_DATE AS START_DATE ,A.END_DATE AS END_DATE ,TO_CHAR(SUM(A.CS_TIME)) AS CS_TIME 교육시간 ,TO_CHAR(SUM(A.ISU_CS_TIME)) AS ISU_CS_TIME 교육누적시간 ,SUM(A.ISU_CS_TIME) OVER(ORDER BY A.EDU_TP_CD ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) 교육누적시간 test1 ,SUM(SUM(A.ISU_CS_TIME))OVER(ORDER BY EDU_TP_CD) 교육누적시간 test2 ,A.EXC_CODE AS EXC_CODE ,A.ATTACH_NO ,DECODE(A.ATTACH_NO,'','N',null,'N','Y') AS ATTACH_YN ,A.REMARKS AS REMARKS ,A.LST_MDF_DT AS LST_MDF_DT ,A.LST_MDF_UID AS LST_MDF_UID FROM TB2_GNR_EDU_ENR A ,TB2_MST_PROC_CODE B ,TB2_ADM_PMAS C WHERE A.USERID = C.USERID AND B.PROC_ID = C.PROC_ID group by C.SUBORG_CODE ,C.DEPTCD ,B.PROC_ID ,B.PROC_NM ,A.NAME ,A.USERID ,A.EDU_TP_CD ,A.ISU_FLAG ,A.START_DATE ,A.END_DATE ,A.CS_TIME ,A.ISU_CS_TIME ,A.EXC_CODE ,A.ATTACH_NO ,A.REMARKS ,A.LST_MDF_DT ,A.LST_MDF_UID
교육시간 컬럼들은 넘버형식입니다.
to_char 로 한 이유는 화면에서 입력이 안되어서..잠시나마 to_char 로 변환 시켰습니다.
EDU_TP_CD / CS_TIME / ISU_CS_TIME
국어 / 2 / 2
국어 / 4 / 6
국어 / 4 / 10 --> 10시간이면 수료
수학 / 2 / 2
이렇게 나오게 하고 싶은데 현재 누적시간TEST1 쿼리는 교육코드를 다 합친 누적 시간이 나와버리네요..
가장 문제는 A.EDU_TP_CD 코드가 교육 코드로 짯는데 각 코드 별로 교육누적합계를 구해야 하는데
그게 잘 안됩니다....
조건절에 EDU_TP_CD를 넣기엔 조회가 너무 번거로워 질꺼 같아서 조건절엔 넣지 않을려고 하는데..
어떤부분을 수정을 해야 할까요?? 도움 부탁드립니다.
GROUP BY 항목이 너무 많네요?
- GROUP BY 의 정확한 사용법을 모르고 사용하는 듯 합니다.
분석함수 사용시 그룹별로 집계하려면?
- PARTITION BY 구문을 사용하면 됩니다.
전반적으로 집계함수 및 분석함수의 의미를 잘 이해하지 못하고 작성한 쿼리로 보입니다.
- http://www.gurubee.net/lecture/2671