테이블 A에
id 회원id 쿠폰마스터ID 발급일자 사용일자
1 AA 30 20210102 20210113
2 AA 30 20210207 NULL
3 AA 40 20210208 20210217
4 BB 30 20210101 NULL
이렇게 있을때
각 쿠폰마스터ID,회원ID별로 데이터를 각 월(1월부터 12월까지)에 발급했는지여부와 사용했는지 여부를 Y,N으로 나타내고싶은데
회원ID 쿠폰마스터ID 1월발급여부 1월사용여부 2월발급여부 2월사용여부 ~~ 12월발급여부 12월사용여부
AA 30 Y Y Y N N N
AA 40 N N Y N N N
BB 30 Y N N N N N
이런식으로 데이터를 나타내고 싶은데 혹시 방법이 없을까요??
WITH t AS ( SELECT 1 id, 'AA' 회원id, 30 쿠폰마스터ID, '20210102' 발급일자, '20210113' 사용일자 FROM dual UNION ALL SELECT 2, 'AA', 30, '20210207', NULL FROM dual UNION ALL SELECT 3, 'AA', 40, '20210208', '20210217' FROM dual UNION ALL SELECT 4, 'BB', 30, '20210101', NULL FROM dual ) SELECT 회원ID , 쿠폰마스터ID , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '01', 'Y')), 'N') 발급여부_01 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '01', 'Y')), 'N') 사용여부_01 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '02', 'Y')), 'N') 발급여부_02 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '02', 'Y')), 'N') 사용여부_02 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '03', 'Y')), 'N') 발급여부_03 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '03', 'Y')), 'N') 사용여부_03 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '04', 'Y')), 'N') 발급여부_04 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '04', 'Y')), 'N') 사용여부_04 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '05', 'Y')), 'N') 발급여부_05 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '05', 'Y')), 'N') 사용여부_05 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '06', 'Y')), 'N') 발급여부_06 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '06', 'Y')), 'N') 사용여부_06 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '07', 'Y')), 'N') 발급여부_07 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '07', 'Y')), 'N') 사용여부_07 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '08', 'Y')), 'N') 발급여부_08 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '08', 'Y')), 'N') 사용여부_08 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '09', 'Y')), 'N') 발급여부_09 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '09', 'Y')), 'N') 사용여부_09 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '10', 'Y')), 'N') 발급여부_10 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '10', 'Y')), 'N') 사용여부_10 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '11', 'Y')), 'N') 발급여부_11 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '11', 'Y')), 'N') 사용여부_11 , NVL(MIN(DECODE(SUBSTR(발급일자, 5, 2), '12', 'Y')), 'N') 발급여부_12 , NVL(MIN(DECODE(SUBSTR(사용일자, 5, 2), '12', 'Y')), 'N') 사용여부_12 FROM t WHERE 발급일자 LIKE '2021%' OR 사용일자 LIKE '2021%' GROUP BY 회원ID, 쿠폰마스터ID ORDER BY 회원ID, 쿠폰마스터ID ;