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'
이게 어렵습니다.
도움 부탁드립니다.