[답변][답변]제가 설명을 잘못드린것 같습니다 ^^: 0 5 2,431

by 윤태영 [2007.08.24 11:52:02]


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

근데, 제가 설명을 잘 못드렸나 봅니다 ^^;;

첫글에서 1번입니다.

 

1. tbl_info에서 xmltype 컬럼에서 xpath로 CloseGb = '1'이고, PeerCd = 'AAAAA' 인
   prod_cd 의 가장 최근 chg_dt 를 가지는 행들을 조회합니다.
   tbl_info에서 최종 조회하는 것은 prod_cd, CoCd 값입니다.

 

=>

 

1에서는 각 prod_cd 별로 chg_dt가 최신인 prod_cd 를 가져오기 위해서 한 작업입니다.

 

prod_cd, chg_dt

AAAAA0, 20070606

AAAAA0, 20070608

BBBBB0, 20070505

BBBBB0, 20070707

...

=> 이런식이면 AAAAA0, 20070608, BBBBB0, 20070707 ... 들을 조회하려고 의도를 했습니다. ^^;

 

감사합니다. 점심식사 맛있게 드시구요~

by 강정식 [2007.08.24 00:00:00]
그렇다면 서브쿼리의 내용을 수정하시면 됩니다

SELECT PROD_CD
, CO_CD
FROM (SELECT PROD_CD
, EXTRACTVALUE(XBRLDOC,
'/xbrl/info:CoCd',
'xmlns="http://www.xbrl.org/2003/instance" xmlns:info="http://www.company.com/info/2007-10-01"') CO_CD
, ROW_NUMBER() OVER(PARTITION BY PROD_CD ORDER BY CHG_DT DESC) CNT
FROM TBL_INFO D
WHERE EXTRACTVALUE(XBRLDOC,
'/xbrl/info:PeerCd',
'xmlns="http://www.xbrl.org/2003/instance" xmlns:info="http://www.company.com/info/2007-10-01"') = 'AAAAA'
AND EXTRACTVALUE(XBRLDOC,
'/xbrl/info:CloseGb',
'xmlns="http://www.xbrl.org/2003/instance" xmlns:info="http://www.company.com/info/2007-10-01"') = '1')
WHERE CNT = 1

바뀐 내용은 이것입니다

PARTITION BY PROD_CD ORDER BY CHG_DT DESC

by 윤태영 [2007.08.24 00:00:00]
네. 감사합니다. (^^)(__)(^^) 강정식님의 도움으로 힘을 얻어서 다시 시도해 봐야겠습니다. ^^

by 윤태영 [2007.08.24 00:00:00]
서브 쿼리에서 코드를 얻어오는 부분은 잘 얻어옵니다. (EXTRACTVALUE 함수부분을 이용해 인덱스를 생성습니다).
그 이후에 TBL_RAPM, TBL_CRAPM에서 값을 얻어오는데 시간이 엄청 오래걸리는데... 혹시 제가 놓치고 있는 부분은 없는지요?

by 강정식 [2007.08.24 00:00:00]
실행계획이 계획대로 잘 나오는지 확인하시구요
만약 잘 나온다면 이미 말씀드렸던것처럼
EXTRACTVALUE 펑션 안의 쿼리를 튜닝하셔야 합니다

by 윤태영 [2007.08.24 00:00:00]
실시간 답변을 주시네요 ^^ ㅎㅎ
네. 정말 많은 도움이 되었습니다.
저도 언젠가 다른 사람에게 도움을 주도록 더 열심히 해야겠습니다.
행복하세요~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입