CREATE OR REPLACE PROCEDURE PR_RC_GEN_WKNO(P_YYYY IN VARCHAR2) IS
BEGIN
INSERT INTO TB_RC_WKNO (
COMP_CD,
YM,
AGG_WKNO,
BG_DT,
END_DT,
CRT_USR_ID,
CRT_DTM,
UPDT_USR_ID,
UPDT_DTM
)
SELECT
'100'
, MM
, RANK() OVER(PARTITION BY MM ORDER BY WW) WKNO
, S_DATE
, E_DATE
, 1
, SYSDATE
, 1
, SYSDATE
FROM (
SELECT
WW
, S_DATE
, E_DATE
, CASE WHEN SUBSTR(S_DATE,5,2)=SUBSTR(E_DATE,5,2) THEN SUBSTR(S_DATE,1,6)
WHEN TO_NUMBER(SUBSTR(E_DATE,7,2))<4 THEN SUBSTR(S_DATE,1,6)
ELSE SUBSTR(E_DATE,1,6) END MM
FROM (
SELECT
WW
, MIN(DD) KEEP ( DENSE_RANK FIRST ORDER BY DD ) AS S_DATE
, MAX(DD) KEEP ( DENSE_RANK LAST ORDER BY DD ) AS E_DATE
FROM (
SELECT TO_CHAR(TO_DATE(P_YYYY||'0101','YYYYMMDD') + LEVEL-1, 'YYYYMMDD') AS DD
, TO_CHAR(TO_DATE(P_YYYY||'0101','YYYYMMDD') + LEVEL-1, 'DAY') AS DAYOFWEEK
, TO_CHAR(TO_DATE(P_YYYY||'0101','YYYYMMDD') + LEVEL-1, 'WW') AS WW
, TO_CHAR(TO_DATE(P_YYYY||'0101','YYYYMMDD') + LEVEL-1, 'MM') AS MM
FROM DUAL
CONNECT BY LEVEL <= TO_DATE(P_YYYY||'1231','YYYYMMDD')-TO_DATE(P_YYYY||'0101','YYYYMMDD')+1
) GROUP BY WW
)
)
;
COMMIT;
END PR_RC_GEN_WKNO;
'DB' 카테고리의 다른 글
ER Studio 물리테이블 생성 (0) | 2019.02.09 |
---|---|
FB firebird 디비 생성 (0) | 2014.09.02 |
Firebird 클라이언트 툴 DbVisualizer 설정 (0) | 2014.08.31 |