가. 언어유형/SQL Query

MSSQL에서 정렬 순서 사용자정의

LemonDory 2014. 11. 11. 10:54

status 필드가 있는데
where status in ('active', 'approved', 'rejected', 'submitted') 와 같이 넣었을때
기본키 등의 order by 에 영향을 받은 sorting 이 되게 된다.

결과를 기본 sorting 영향이 아닌
자신만의 순서로 받고 싶은경우
아래와 같이 Order by Case 문으로 해결 가능하다.



http://stackoverflow.com/questions/3892406

When 조건 Then 순서번호

Use a CASE expression (SQL Server 2005+):

ORDER BY CASE status
           WHEN 'active' THEN 1
           WHEN 'approved' THEN 2
           WHEN 'rejected' THEN 3
           WHEN 'submitted' THEN 4
           ELSE 5
         END

You can use this syntax for more complex evaluation (including combinations, or if you need to use LIKE)

ORDER BY CASE 
           WHEN status LIKE 'active' THEN 1
           WHEN status LIKE 'approved' THEN 2
           WHEN status LIKE 'rejected' THEN 3
           WHEN status LIKE 'submitted' THEN 4
           ELSE 5
         END

MySQL에서는 FIELD() 함수로 간단하게 해결 가능!

출처 : http://itzone.tistory.com/386