경진의 블로그

환율 계산(바로 이전 Record의 값을 참조할 때) 본문

자바개발과정/오라클(Oracle)

환율 계산(바로 이전 Record의 값을 참조할 때)

aith 2008. 6. 2. 01:20
환율 계산 (바로 이전 Record의 값을 참조할 때)

문제 (꼭 기억해야함!! ★★★★★)
TEST02의 '20010901'부터 '20010911'까지의 자료를 이용해 해당일자보다 작거나 같은 날의 환율을 순서대로 6개 까지 보여주는 쿼리를 만들어 보자

select
       a.cdate
      ,a.amt
      ,a.crate
      ,max(decode(no1,no2+1,b.crate)) "d-1"
      ,max(decode(no1,no2+2,b.crate)) "d-2"
      ,max(decode(no1,no2+3,b.crate)) "d-3"
      ,max(decode(no1,no2+4,b.crate)) "d-4"
      ,max(decode(no1,no2+5,b.crate)) "d-5"
  from (
        select
              rownum no1
             ,cdate
             ,amt
             ,crate
         from test02
        where cdate between '20010901' and '20010911'
       )a,
       (
        select
              rownum no2
             ,cdate
             ,amt
             ,crate
         from test02
        where cdate between '20010901' and '20010911'
       )b
 where b.no2 <= a.no1
group by a.cdate,a.amt,a.crate;

분석용 함수를 이용하여 처리한 결과

SELECT
    CDATE 일자
    ,AMT 금액
    ,CRATE
    ,LAG(CRATE,1) OVER(ORDER BY CDATE) AS "D-1"
    ,LAG(CRATE,2) OVER(ORDER BY CDATE) AS "D-2"
    ,LAG(CRATE,3) OVER(ORDER BY CDATE) AS "D-3"
    ,LAG(CRATE,4) OVER(ORDER BY CDATE) AS "D-4"
    ,LAG(CRATE,5) OVER(ORDER BY CDATE) AS "D-5"
FROM TEST02
WHERE CDATE BETWEEN '20010901' AND '20010911'

'자바개발과정 > 오라클(Oracle)' 카테고리의 다른 글

PL/SQL - IF 조건 분기문  (0) 2008.06.02
PL/SQL  (0) 2008.06.02
환율 계산(바로 이전 Record의 값을 참조할 때)  (0) 2008.06.02
뷰 작성  (0) 2008.06.02
뷰(VIEW)  (0) 2008.05.28
이전 레코드 값 참조 방법(전일 환율)  (0) 2008.05.28
0 Comments
댓글쓰기 폼