우선 분기별로 주간업무 보고를 평가하는 시스템이며
주간별로 계획/성과를 등록을 합니다.
테이블구성은 주간업무마스터,상세 두개 테이블로 되어있으며
문제는 조회시 문제가 되는부분 때문에 문의 드립니다.
우선 제가 SQL을 생각해봤는데 아래처럼 작성했고요
M_DATA라고 우선 2019년 분기별,월별,주차를 구분하고 그게에 대하여 JOIN으로 계획,성과를 표현하려고 했는데요
문제는 제가 원하는 결과로 값이 조회가 안됩니다.
문제 SQL)
WITH M_DATA /* EvEp280.selectList */AS (SELECT *
FROM(SELECT TO_CHAR(TO_DATE(DAYS) + (LV - 1), 'YYYYMMDD') AS YYYYMMDD ,
TO_CHAR(TRUNC(TO_DATE(TO_CHAR(TO_DATE(DAYS) + (LV - 1), 'YYYYMMDD')), 'IW'), 'YYYYMMDD') AS 주차시작일 ,
TO_CHAR(TO_DATE(TO_CHAR(TRUNC(TO_DATE(TO_CHAR(TO_DATE(DAYS) + (LV - 1), 'YYYYMMDD')), 'IW'), 'YYYYMMDD')) + 4, 'YYYYMMDD') AS 주차종료일 ,
TO_CHAR(TO_DATE(TO_CHAR(TO_DATE(DAYS) + (LV - 1), 'YYYYMMDD')), 'W') AS 주차 ,
RPAD(TO_CHAR(TO_DATE(TO_CHAR(TO_DATE(DAYS) + (LV - 1), 'YYYYMMDD')), 'Q'), 3) AS 분기 ,
TO_CHAR(TO_DATE(DAYS) + (LV - 1), 'YYYYMM') AS YYYYMM
FROM (SELECT '2019' || '0101' AS DAYS
FROM DUAL ) INNER JOIN (SELECT LEVEL lv
FROM dual CONNECT BY LEVEL <= 365 ) S ON 1=1
WHERE 1=1 )
WHERE 1=1
AND YYYYMMDD = FIRST_DAY )
SELECT YYYYMMDD
,주차시작일
,주차종료일
,주차
,분기
,YYYYMM
,S.주차시작일
,S.주차종료일
,S.사번
,S1.구분
,S1.순번
,S1.내역
,S2.구분
,S2.순번
,S2.내역
FROM
(
SELECT *
FROM M_DATA
WHERE 1=1
AND QUART = 2
) M
LEFT OUTER JOIN 주간업무 마스터 테이블 S
ON M.주차시작일 = S.주차시작일
AND M.주차종료일 = S.주차종료일
LEFT OUTER JOIN THV_OUTCOME_WEEK_REP_D S1
ON M.주차시작일 = S1.주차시작일
AND M.주차종료일 = S1.주차종료일
AND S.사번 = S1.사번
AND S1.구분 = '1'
LEFT OUTER JOIN 주간업무 상세 테이블 S2
ON M.주차시작일 = S2.주차시작일
AND M.주차종료일 = S2.주차종료일
AND S.사번 = S2.사번
AND S2.구분 = '2'
ORDER BY M.YYYYMMDD,S1.순번,S2.순번
원하는 결과 값가 테이블 데이타는 파일로 첨부합니다.
SELECT m.주차시작일 , m.주차종료일 , m.주차 , m.분기 , m.yyyymm , s.사번 , s1.순번 , MIN(DECODE(s1.구분, '1', s1.내역)) 계획_내역 , MIN(DECODE(s1.구분, '2', s1.내역)) 실적_내역 FROM m_data m LEFT OUTER JOIN 주간업무마스터테이블 s ON m.주차시작일 = s.주차시작일 AND m.주차종료일 = s.주차종료일 LEFT OUTER JOIN 주간업무상세테이블 s1 ON s.주차시작일 = s1.주차시작일 AND s.주차종료일 = s1.주차종료일 AND s.사번 = s1.사번 AND s1.구분 IN ('1','2') WHERE m.분기 = 2 GROUP BY m.주차시작일 , m.주차종료일 , m.주차 , m.분기 , m.yyyymm , s.사번 , s1.순번 ORDER BY 주차시작일, 사번, 순번 ;