update문 질문입니다. 0 1 916

by 느훼훼 [SQL Query] [2020.09.23 09:30:01]


 

SELECT * FROM V_TABLE ORDER BY FROMYMD (실행된 결과값은 아래와 같습니다.)

종목(JONG) 종목명(KNAME) 적용초일(FROMYMD) 적용말일(TOYMD)
KR777777777777 삼성전자1 11111111 20120405
KR777777777777 삼성전자2 20120406 20191025
KR777777777777 삼성전자3 20191026 29991231

특정 테이블에 위와 같은 데이터가 들어있습니다. SELECT된 위 테이블 데이터의 경우

뷰테이블을 조회한 것인데요, 뷰 테이블은 간단합니다. 과거자 테이블과 현재자 테이블을

UNION ALL 한 것입니다. 예를들어,

SELECT * FROM FTABLE(과거자테이블)

UNION ALL

SELECT * FROM TABLE (현재자테이블)

입니다. 어떠한 상황때문에 강제적으로 FROMYMD와 TOYMD를 UPDATE해줘야 하는데요.

일단 가장 마지막에 조회되는것이 무조건 현재테이블에서 조회되는 것입니다. 

위 표의 경우 가장 아래 데이터가요. 첫번째/두번째 데이터는 과거자 테이블에서 조회된 데이터입니다.

현재자 테이블의 FROMYMD를 일괄적으로 현재의 날짜로 UPDATE해줍니다. 이건 쉬워서 할 수 있어요.

근데 과거자의 TOYMD도 현재자 테이블의 FROMYMD -1 날짜로 일괄적으로 변경시켜줘야합니다.

이걸 못하겠습니다. 

전체테이블 데이터는 모든 주식 종목을 가지고 있구요, 정보 수정이 이뤄진 만큼의 테이터를 

가지고 있습니다. 수정이 없었더면 과거자테이블의 종목별 건수는 0이 되겠죠.

위 설명에 대한 제가 원하는 데이터 값은 아래와 같습니다.

종목(JONG) 종목명(KNAME) 적용초일(FROMYMD) 적용말일(TOYMD)
KR777777777777 삼성전자1 11111111 20120405
KR777777777777 삼성전자2 20120406 20200922
KR777777777777 삼성전자3 20200923 29991231

UPDATE TABLE SET FROMYMD = '현재날짜' <<< 이건 쉽습니다.

UPDATE FTABLE SET TOYMD = '과거자데이터 중 가장 마지막에 조회되는 TOYMD의 현재날짜-1'

이게 어렵습니다. 

도움 부탁드립니다.

by 느훼훼 [2020.09.23 10:01:47]

질문글을 올리고 나서 다른 방법이 생각나긴 했네요.

1. 현재자테이블의 데이터를 과거자테이블에 INSERT

2. 과거자테이블의 TOYMD를 특정날짜-1로 UPDATE

3. 현재자테이블의 FROMYMD를 특정날짜로 UPDATE

위 세 단계로 진행하면 되긴 하겠네요 ㅎ,.ㅎ;;

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