by 강정식 [2007.04.26 11:14:54]
이번에는 이력관리 퀴즈를 한번 내볼까 합니다.
참고사이트는 답변 올릴 때 알려드리겠구요. 퀴즈는 다음과 같습니다.
REC_NAME을 구분하여 연속적으로 들어오는 날짜(선분)를 하나의 날짜(선분)로 만드는 것입니다. 즉 날짜가 겹치면 연속된것으로 보고 하나로 만드는것이죠.
샘플데이터는 다음과 같습니다.
SELECT 'A' REC_NAME, '199801' S_DATE, '199804' E_DATE FROM DUAL UNION ALL
SELECT 'A' REC_NAME, '199806' S_DATE, '199809' E_DATE FROM DUAL UNION ALL
SELECT 'A' REC_NAME, '199808' S_DATE, '199812' E_DATE FROM DUAL UNION ALL
SELECT 'A' REC_NAME, '199812' S_DATE, '199902' E_DATE FROM DUAL UNION ALL
SELECT 'A' REC_NAME, '199912' S_DATE, '200002' E_DATE FROM DUAL UNION ALL
SELECT 'B' REC_NAME, '199801' S_DATE, '199807' E_DATE FROM DUAL UNION ALL
SELECT 'B' REC_NAME, '199806' S_DATE, '199809' E_DATE FROM DUAL UNION ALL
SELECT 'B' REC_NAME, '199811' S_DATE, '199812' E_DATE FROM DUAL UNION ALL
SELECT 'D' REC_NAME, '199801' S_DATE, '199804' E_DATE FROM DUAL;
이를 다음과 같은 데이터로 만드시면 됩니다.
SELECT 'A' REC_NAME, '199801' S_DATE, '199804' E_DATE FROM DUAL UNION ALL
SELECT 'A' REC_NAME, '199806' S_DATE, '199902' E_DATE FROM DUAL UNION ALL
SELECT 'A' REC_NAME, '199912' S_DATE, '200002' E_DATE FROM DUAL UNION ALL
SELECT 'B' REC_NAME, '199801' S_DATE, '199809' E_DATE FROM DUAL UNION ALL
SELECT 'B' REC_NAME, '199811' S_DATE, '199812' E_DATE FROM DUAL UNION ALL
SELECT 'D' REC_NAME, '199801' S_DATE, '199804' E_DATE FROM DUAL
예를 들어 보겠습니다.
위의 샘플 데이터를 선분으로 표시하면 아래처럼 되겠죠.
여기서 REC_NAME 값에 따라 색깔로 구분을 했습니다.
여기서 아래 그림처럼 같은 REC_NAME 값 안에서 연속으로 선분이 겹치는 값들을 체크하고..
이를 아래 그림처럼 하나의 선분으로 만드시면 됩니다.
보시고 의문사항이 있으시면 리플 달아주시기 바랍니다.
정답과 해설은 일주일 후에 올리겠습니다.
감사합니다.