Tips

SQL 정렬 트릭

ZelKun 2020. 7. 5. 14:59
반응형

코드성 데이터는 보통 코드명 이름순으로 정렬을 하거나, 정렬순서 컬럼을 추가해서 사용하기도 하는데

 

특정한 몇개의 코드를 우선적으로 보여줄 수는 없냐는 요구가 들어왔다

기존 정렬순서는 유지하되, 특정 코드만 이라는 요구에 정렬순서를 바꾸면 되지않냐고 했더니 무참하게 까였다...

 

간단하게 ORDER BY 에다가 CASE로 선택적으로 순서를 바꿔주면 된다

 

T_CODE

code code_nm sort_order
00001 1
00002 2
00003 3
. . .
101010 90
101011 100

 

뭐 대충 이런 테이블이 있다면

SELECT
    CODE
    , CODE_NM
FROM
	T_CODE
ORDER BY
	SORT_ORDER;

이런 SQL을 써야하는데

'박' 일경우는 최상단, '최' 는 두번째로 보여주고 나머진 그대로 정렬해야 한다면

 

이렇게 바꿀 수 있다

SELECT
    CODE
    , CODE_NM
FROM
	T_CODE
ORDER BY
	CASE WHEN CODE_NM = '박' THEN 0 ELSE 1 END
  	, CASE WHEN CODE_NM = '최' THEN 0 ELSE 1 END
	, SORT_ORDER;

 

 

우선순위 컬럼을 하나더 만드는게 추후에 관리측면에서 더 좋을테니

특별한게 아니라면 추천하지는 않는다

 

 

 

반응형