[백업][가리사니] mssql 2005 이하에서 case 조건에 따라 order by를 주는방법
mssql

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

가능은 하지만 퍼포먼스에 좋지 않음으로 사용을 권장하지 않습니다.

예를들어

@조건 = 1 일경우 오름차순
@조건 = 2 일경우 내림차순

일경우

ORDER BY
  (CASE WHEN @조건 = 1 THEN 필드 END) ASC,
  (CASE WHEN @조건 = 2 THEN 필드 END) DESC

라고 쓰게된다면 조건이 맞지않는경우 NULL ASC 가되어 모두 FALSE가 되어버리기 때문에 정렬이되지않고 다음 정렬을 실행한다. 다만.. 퍼포먼스상으론 좋지 않기 때문에.. 최종 출력형태에서 정렬해야하는 경우등 조금 특수한 경우에서 어쩔수없는 경우 사용하길 권장합니다.

퍼포먼스를 신경쓰는 경우라면 IF문을 두어 ORDER BY만 다른 같은 반복문을 쓰길 권장합니다.