가장 최근 인터페이스된 날짜의 데이타를 효율적으로 가져오는 방법 0 2 3,522

by 마늘장 [SQL Query] SQL MAX [2014.07.11 10:27:39]


샘플 데이타가 아래와 같을때 Code별 IF_date가 가장최근인 Amount만을 가져오는

가장 효율적인 방법은 어떤 걸까요...

즉, CD1은 200, CD2는 100인 amount를 가져오면 되는데 자기자신 테이블의 Max를 다시 쿼리하지 않고

한번의 쿼리로 가져오고 싶습니다. 감사합니다.

WITH tmp AS (
SELECT to_date('20140624 09:01:52', 'YYYYMMDD HH24:MI:SS') IF_date, 'CD1' CODE, 200 Amount FROM dual UNION ALL
SELECT to_date('20140623 09:06:42', 'YYYYMMDD HH24:MI:SS'), 'CD1', 140 FROM dual UNION ALL
SELECT to_date('20140622 08:16:00', 'YYYYMMDD HH24:MI:SS'), 'CD2', 100 FROM dual UNION ALL
SELECT to_date('20140623 19:08:32', 'YYYYMMDD HH24:MI:SS'), 'CD1', 150 FROM dual)
SELECT *
FROM tmp

by 우리집아찌 [2014.07.11 10:37:15]
 SELECT * 
 FROM 
( SELECT * , ROW_NUMBER() OVER(PARTITION BY CODE ORDER BY IF_DATE DESC ) RN
  FROM TMP ) 
 WHERE RN=1

 


by 마늘장 [2014.07.11 11:15:07]

답변 감사합니다.

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