테이블 : student
학번 | 이름 | 생년월일 | 생성월일 |
111222 | 홍길동 | 1990.01.01 | 20190101 |
111333 | 홍길동 | 1990.01.01 | 20190301 |
111444 | 홍길동 | 1990.01.01 | 20190701 |
이 테이블(student) 에서 학번과,생성월일 기준으로,,,
학번 | 이름 | 생년월일 | 생성월일 |
111222 | 홍길동 | 1990.01.01 | 20190101 |
111222 | 홍길동 | 1990.01.01 | 20190201 |
111333 | 홍길동 | 1990.01.01 | 20190301 |
111333 | 홍길동 | 1990.01.01 | 20190401 |
111333 | 홍길동 | 1990.01.01 | 20190501 |
111333 | 홍길동 | 1990.01.01 | 20190601 |
111444 | 홍길동 | 1990.01.01 | 20190701 |
이렇게 table : student_stu 에 insert 하고싶습니다 ㅠㅠ
방법이 있을까요..?
-- 인서트문은 테스트 못해봤네요. INSERT INTO T WITH T AS ( SELECT '111222' NO , '홍길동' NM , '1990.01.01' BIRTH_DT ,'20190101' DT FROM DUAL UNION ALL SELECT '111333' , '홍길동' , '1990.01.01' ,'20190301' FROM DUAL UNION ALL SELECT '111444' , '홍길동' , '1990.01.01' ,'20190701' FROM DUAL ), COPY_T AS ( SELECT ADD_MONTHS( MIN_DT , LEVEL - 1 ) DT FROM (SELECT MAX(TO_DATE(DT,'YYYYMMDD')) MAX_DT , MIN(TO_DATE(DT,'YYYYMMDD')) MIN_DT FROM T ) CONNECT BY LEVEL <= MONTHS_BETWEEN ( MAX_DT , MIN_DT ) + 1 ) SELECT LAST_VALUE(A.NO IGNORE NULLS) OVER(ORDER BY B.DT) NO , LAST_VALUE(A.NM IGNORE NULLS) OVER(ORDER BY B.DT) NM , LAST_VALUE(A.BIRTH_DT IGNORE NULLS) OVER(ORDER BY B.DT) BIRTH_DT , B.DT FROM T A , COPY_T B WHERE A.DT(+) = B.DT MINUS SELECT NO , NM , BIRTH_DT , TO_DATE(DT,'YYYYMMDD') FROM T
답변 정말 감사드립니다..!
학번 | 이름 | 생년월일 | 생성월일 |
111222 | 홍길동 | 1990.01.01 | 20190101 |
111222 | 홍길동 | 1990.01.01 | 20190201 |
111333 | 홍길동 | 1990.01.01 | 20190301 |
111333 | 홍길동 | 1990.01.01 | 20190401 |
111333 | 홍길동 | 1990.01.01 | 20190501 |
111333 | 홍길동 | 1990.01.01 | 20190601 |
111444 | 홍길동 | 1990.01.01 | 20190701 |
이렇게 빨간으로 표시된 것만 출력이 되던데.. 빨간색외 원래 기존 데이터도 같이 출력할려면..어떻게 해야할까요ㅠ
학번 | 이름 | 생년월일 | 생성월일 |
111222 | 홍길동 | 1990.01.01 | 20190101 |
111222 | 홍길동 | 1990.01.01 | 20190201 |
111333 | 홍길동 | 1990.01.01 | 20190301 |
111333 | 홍길동 | 1990.01.01 | 20190401 |
111333 | 홍길동 | 1990.01.01 | 20190501 |
111333 | 홍길동 | 1990.01.01 | 20190601 |
111444 | 홍길동 | 1990.01.01 | 20190701 |