연속되어 조회되는 쿼리 부탁드립니다. 0 4 747

by 화랑님 [SQL Query] [2019.01.25 16:36:43]


WITH T AS
(
  SELECT 'A' AS EMPCD, TO_DATE('20190110', 'YYYYMMDD') AS IN_DATE, 4 TERM FROM DUAL UNION ALL
  SELECT 'B' AS EMPCD, TO_DATE('20190112', 'YYYYMMDD') AS IN_DATE, 5 TERM FROM DUAL
)

 

출력되어지는 결과는?

EMPCD IN_DATE
A 20190110
A 20190111
A 20190112
A 20190113
B 20190112
B 20190113
B 20190114
B 20190115
B 20190116

 

 

위 결과처럼 입력일자(IN_DATE)가 기간(TERM)만큼 보여지도록 하는것인데

LEVEL... CONNECT BY를 사용하여 보았지만 결과가 기하급수적으로 늘어나서 도움 요청드립니다

by 우리집아찌 [2019.01.25 16:46:00]
WITH T AS
(
  SELECT 'A' AS EMPCD, TO_DATE('20190110', 'YYYYMMDD') AS IN_DATE, 4 TERM FROM DUAL UNION ALL
  SELECT 'B' AS EMPCD, TO_DATE('20190112', 'YYYYMMDD') AS IN_DATE, 5 TERM FROM DUAL
)

SELECT A.EMPCD , A.IN_DATE + LV - 1 IN_DATE , TERM , LV
  FROM T A
     ,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= ( SELECT MAX(TERM) FROM T )) B
 WHERE B.LV <= A.TERM
 ORDER BY A.EMPCD , B.LV

 


by 화랑님 [2019.01.25 17:04:52]

답변 감사합니다.

정말 잘 사용하겠습니다.


by 마농 [2019.01.25 16:46:50]

다건 테이블에 직접 Connect By LEVEL <= n 하시면 안됩니다.
단건 테이블 dual 에 적용 후 조인하는 방식으로 하세요.
http://gurubee.net/article/55635


by 화랑님 [2019.01.25 17:05:48]

다건 테이블에 직접 CONNCT BY를 사용했더니 발생한 문제였습니다.

단건 테이블을 만들어 사용하는 생각을 못했네요..

감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입