데이타중 최신 버젼만 뽑아내는 방법을 알고 싶습니다. 0 1 623

by 박성현장군님 [2020.03.05 10:23:24]


이름  값1 값2 값3 값4 버젼 

아빠   1    1    1    1     3

아빠   1    2    1    1     2

아빠   1    1    3    1     1

엄마   2    1    4    4     1

엄마   2    3    2    1     2

엄마   2    3    4    3     4

 

테이블이 만약 이렇게 있을떄요 버젼 칼럼이 제일 높은(아빠3, 엄마4) 것만 이름 기준으로 빼고 싶은데요

결과 :

이름  값1 값2 값3 값4 버젼

아빠   1    1    1    1     3 

엄마   2    3    4    3     4

요렇게 뽑아야 되는데요 이게 간단 한거 같은데 막상할려니 안되서요 혹시 간단하게 쿼리로 할 수 있을까요?

by 용박 [2020.03.05 10:46:59]

WITH T AS (
SELECT '아빠' AS 이름, 1 AS 값1, 1 AS 값2, 1 AS 값3, 1 AS 값4, 3 AS 버전 FROM DUAL
UNION ALL SELECT '아빠', 1, 2, 1, 1, 2 FROM DUAL
UNION ALL SELECT '아빠', 1, 1, 3, 1, 1 FROM DUAL
UNION ALL SELECT '엄마', 2, 1, 4, 4, 1 FROM DUAL
UNION ALL SELECT '엄마', 2, 3, 2, 1, 2 FROM DUAL
UNION ALL SELECT '엄마', 2, 3, 4, 3, 4 FROM DUAL
)
SELECT *
FROM(
SELECT 이름,
        값1,
        값2,
        값3,
        값4,
        버전,
        RANK() OVER(PARTITION BY 이름 ORDER BY 버전 DESC) RK
FROM T)
WHERE RK = 1
 

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