
이런 데이터를 가지는 TAB 테이블에서

A컬럼을 중복제거하고 B컬럼으로 오름차순 정렬한 결과를 받고 싶다.
SELECT DISTINCT A FROM TAB ORDER BY B ASC
로 하면 ORDER BY절에 사용된 B를 SELECT에 포함하라는 에러 메세지가 나온다.
하지만 B를 SELECT절에 넣으면 distinct는 한 열을 기준으로 중복제거를 하기 때문에
'IMA 1'과 'IMA 2'는 중복제거 되지 않는다.
이런 경우 ROW_NUMBER PARTITION BY 를 사용할 수 있다.
WITH TMPA AS (
SELECT
A,B,
ROW_NUMBER() OVER (PARTITION BY A ORDER BY B) AS rn
FROM TAB
)
SELECT A,B
FROM TMPA
WHERE rn = 1
ORDER BY B ASC
이렇게 rn컬럼을 추가한 TMPA테이블을 만들고 이 테이블에서 원하는 결과를 도출한다.
TMPA테이블의 모습은 이렇게 된다.

rn=1인 경우만 유니크한 A값들만 모여있다. 그래서 WHERE rn=1으로 DISTINCT된 모습을 볼 수 있다.