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