현재일(2019/06/28) 기준,
아래 처럼 월당 5주차씩 있다고 가정하고
전월 부터 당월 까지의 주차를 하나의 행으로 표현하고 싶습니다.
(월 주차 개수는 실제 해당 월의 주차 갯수)
전월 | 전월주차개수 | 전월 1주차 | 전월 2주차 | 전월 3주차 | 전월 4주차 | 전월 5주차 | 연결
-----------------------------------------------------------------------------------------------------------
201905 | 5 | 201918 | 201919 | 201920 | 201921 | 201922
당월 | 당월주차개수 | 당월 1주차 | 당월 2주차 | 당월 3주차 | 당월 4주차 | 당월 5주차 |
-----------------------------------------------------------------------------------------------------------
201906 | 4 | 201923 | 201924 | 201925 | 201926 | NULL
SELECT ym
, COUNT(*) cnt
, MIN(DECODE(w, 1, iw)) w1
, MIN(DECODE(w, 2, iw)) w2
, MIN(DECODE(w, 3, iw)) w3
, MIN(DECODE(w, 4, iw)) w4
, MIN(DECODE(w, 5, iw)) w5
FROM (SELECT TO_CHAR(dt, 'yyyymm') ym
, TO_CHAR(dt, 'iyyy-iw') iw
, ROW_NUMBER() OVER(PARTITION BY TO_CHAR(dt, 'yyyymm') ORDER BY dt) w
FROM (SELECT dt + (LEVEL-1)*7 dt
FROM (SELECT NEXT_DAY(TRUNC(ADD_MONTHS(sysdate, -1), 'mm')-1, 5) dt FROM dual)
CONNECT BY LEVEL <= 10
)
WHERE dt <= LAST_DAY(sysdate)
)
GROUP BY ym
ORDER BY ym
;
해당 쿼리 결과가 2개의 행으로 나오는데,
1개의 행으로 나오는 쿼리가 필요합니다.
컬럼이 W1. W2, W3, W4, W5 아니라
전월, 전월주차갯수, 전주_W1. 전주_W2, 전주_W3, 전주_W4, 전주_W5, 당월, 당월주차갯수,당주_W1. 당주_W2, 당주_W3, 당주_W4, 당주_W5
위처럼 연결되서 나와야 됩니다.
SELECT MIN(ym) b_ym
, COUNT(DECODE(x , 'b', 1)) b_cnt
, MIN(DECODE(x||w, 'b1', iw)) b_w1
, MIN(DECODE(x||w, 'b2', iw)) b_w2
, MIN(DECODE(x||w, 'b3', iw)) b_w3
, MIN(DECODE(x||w, 'b4', iw)) b_w4
, MIN(DECODE(x||w, 'b5', iw)) b_w5
, MAX(ym) c_ym
, COUNT(DECODE(x, 'c', 1)) c_cnt
, MIN(DECODE(x||w, 'c1', iw)) c_w1
, MIN(DECODE(x||w, 'c2', iw)) c_w2
, MIN(DECODE(x||w, 'c3', iw)) c_w3
, MIN(DECODE(x||w, 'c4', iw)) c_w4
, MIN(DECODE(x||w, 'c5', iw)) c_w5
FROM (SELECT TO_CHAR(dt, 'yyyymm') ym
, TO_CHAR(dt, 'iyyy-iw') iw
, ROW_NUMBER() OVER(PARTITION BY TO_CHAR(dt, 'yyyymm') ORDER BY dt) w
, DECODE(TO_CHAR(dt, 'yyyymm'), TO_CHAR(sysdate, 'yyyymm'), 'c', 'b') x
FROM (SELECT dt + (LEVEL-1)*7 dt
FROM (SELECT NEXT_DAY(TRUNC(ADD_MONTHS(sysdate, -1), 'mm')-1, 5) dt FROM dual)
CONNECT BY LEVEL <= 10
)
WHERE dt <= LAST_DAY(sysdate)
)
;
감사합니다!