Database/Oracle

[오라클] 사용자 정의 특정 값 기준으로 정렬 ORDER BY DECODE()

펌킨고구마 2022. 3. 22. 15:01
728x90
반응형

보통 오라클 정렬을 할 때 order by 를 사용해 정렬했다.

 

ORDER BY 컬럼명 ASC

이 방법으로, 특정컬럼의 오름차순이나 내림차순으로 정렬할 수 있다.

 

 

RANK라는 테이블에는 A, S, SS, P 의 값이 있는데 해당 값을

 

P, SS, S, A, 순으로 정렬을 보여주려고 헀다. 

 

기존방식으로 order by 했더니,

SELECT RANK 
FROM RANK_TABLE
ORDER BY RANK ASC;

이렇게 A, P, S, SS 순 (또는 이거 역순) 으로 밖에 정렬할 수 없다.

 

ORDER BY 내에서 내가 원하는 대로 순서를 정렬하고 싶은 상황.

 

이럴때는 DECODE 를 사용해서 정렬할 수 있다.

DECODE의 사용법은

ORDER BY DECODE(컬럼명, '값', 순서,'값',순서)

해서 이렇게 하면 원하는 대로 출력된다. 

 

SELECT RANK 
FROM RANK_TABLE
ORDER BY DECODE(RANK, 'P', 1, 'SS', 2, 'S', 3, 'A', 4) ASC;

 

728x90
반응형
LIST