안녕하세요~ 조회 쿼리 도움 요청드립니다. 아래 예시 쿼리와 같이, 날짜값을 월~일 요일까지 한 컬럼에 YYYYYYY <- 이런식으로 넣었습니다. 조회할때 한글로 변환해서 일,월,화,수,목,금,토 <-- 이렇게 표현할려고 합니다. 그럴때 제가 한 쿼리에는 "쉼표"를 넣었는데, 마직막 값에는 "쉼표"를 없애고 싶은데 방법을 모르겠어서요 ^^;; 고수님들의 조언 부탁드립니다. WITH TEST_DATA AS ( SELECT 'A' AS BIZ, 'YNNYNNN' AS DATE1, 'YNNYNNN' AS DATE2 FROM DUAL UNION ALL SELECT 'B' AS BIZ, 'YYYYNNN' AS DATE1, 'YYYYNNN' AS DATE2 FROM DUAL ) SELECT BIZ, DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'),1,1), 'Y', '일,', '') || DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'),2,1), 'Y', '월,', '') || DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'),3,1), 'Y', '화,', '') || DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'),4,1), 'Y', '수,', '') || DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'),5,1), 'Y', '목,', '') || DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'),6,1), 'Y', '금,', '') || DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'),7,1), 'Y', '토,', '') AS DATE1 , DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'),1,1), 'Y', '일,', '') || DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'),2,1), 'Y', '월,', '') || DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'),3,1), 'Y', '화,', '') || DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'),4,1), 'Y', '수,', '') || DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'),5,1), 'Y', '목,', '') || DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'),6,1), 'Y', '금,', '') || DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'),7,1), 'Y', '토,', '') AS DATEE FROM TEST_DATA;
* 쿼리결과값
BIZ | DATE1 | DATE2 |
A | 일,수, | 일,수, |
B | 일,월,화,수, | 일,월,화,수, |
* 원하는 결과값
|
|||||||||
LISTAGG 함수를 사용하셔도 됩니다.
WITH TEST_DATA AS ( SELECT 'A' AS BIZ, 'YNNYNNN' AS DATE1, 'YNNYNNN' AS DATE2 FROM DUAL UNION ALL SELECT 'B' AS BIZ, 'YYYYNNN' AS DATE1, 'YYYYNNN' AS DATE2 FROM DUAL ) SELECT BIZ, LISTAGG( DECODE(SUBSTR(NVL(DATE1,'NNNNNNN'), N, 1), 'Y', SUBSTR('일월화수목금토일', N, 1), ''), ',') WITHIN GROUP (ORDER BY ROWNUM) AS DATE1, LISTAGG( DECODE(SUBSTR(NVL(DATE2,'NNNNNNN'), N, 1), 'Y', SUBSTR('일월화수목금토일', N, 1), ''), ',') WITHIN GROUP (ORDER BY ROWNUM) AS DATE2 FROM( SELECT ROWNUM AS N FROM ALL_OBJECTS WHERE ROWNUM <= 7), TEST_DATA GROUP BY BIZ ;