아래 처럼 했더니 쿼리가 하염없이 돌아 갑니다.
SELECT DISTINCT TO_CHAR(TO_DATE(O_SIHANG_DATE, 'yyyy') +LEVEL -1, 'yyyy') STD_YYYY, O_ORGAN_CODE
FROM
(SELECT
O_ORGAN_CODE,
substr(O_SIHANG_DATE,1,4) O_SIHANG_DATE,
substr(O_CLOSE_DATE,1,4) O_CLOSE_DATE
FROM J_ORGAN
START WITH
O_ORGAN_CODE LIKE :P_ORGAN_CODE
CONNECT BY NOCYCLE
PRIOR O_ORGAN_CODE = O_BEFORE_ORGANCODE) A
CONNECT BY TO_DATE(O_SIHANG_DATE,'yyyy') + LEVEL -1 <= TO_DATE(O_CLOSE_DATE, 'yyyy')
A 19980202 20101201
B 20101202 20130101
C 20130102 20140506
이런 결과를
A 1998
A 1999
A 2000
A 2001
....
A 2010
B 2010
B 2011
.....
C 2014
이렇게 구하고 싶은데 생각 처럼 잘 안됩니다.
답변 미리 감사 드립니다.
CONNECT BY LEVEL <= n 을 이용한 행복제 방법은 단건 데이터에서만 적용해야 합니다.
여러건의 집합에 적용하면 모래시계를 만나게 될 것입니다.
http://www.gurubee.net/article/55635
SELECT DISTINCT o_organ_code , TO_CHAR(o_sihang_date + lv - 1) std_yyyy FROM (SELECT o_organ_code , SUBSTR(o_sihang_date, 1, 4) o_sihang_date , SUBSTR(o_close_date , 1, 4) o_close_date FROM j_organ START WITH o_organ_code LIKE :p_organ_code CONNECT BY NOCYCLE PRIOR o_organ_code = o_before_organcode ) a , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99) WHERE lv <= o_close_date - o_sihang_date + 1 ;