select 문의 0 6 656

by 성공한다 [Oracle 기초] [2019.09.02 16:23:19]


테이블 : 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 하고싶습니다 ㅠㅠ

방법이 있을까요..?

 

 

by 우리집아찌 [2019.09.02 16:47:36]
-- 인서트문은 테스트 못해봤네요. 

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 
 

 


by 성공한다 [2019.09.02 17:15:14]

답변 정말 감사드립니다..!

학번 이름 생년월일 생성월일
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

by 우리집아찌 [2019.09.02 17:17:09]

MINUS 이하를 빼세요.


by 성공한다 [2019.09.05 10:48:45]

감사합니다..!


by 마농 [2019.09.04 10:42:33]

이 문제를 풀려면 기준이 필요한데?
학번은 기준이 아닌 듯 하네요?
학번이 다르더라도 이름과 생년월일을 묶어서 기준이 되어야 하는 걸까요?


by 성공한다 [2019.09.05 10:53:52]

월별 학번 누적데이터(변경된 학번)를 쌓고 싶습니다..!

 

 

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