Order by 절에서 조건 줄 수 있나요? 0 5 18,061

by 손님 [2012.10.05 13:01:09]



가령

SELECT COL1,COL2
   FROM TAB1
UNION ALL
SELECT COL1,COL2
   FROM TAB2
ORDER BY 1 DESC, 2

이런식이면  COL1은 내림차순,  COL2는 오름차순으로 정렬되는데요.

문제는 ㅠㅠ

COL2를 정렬하고자 할때,  COL1의 값을 기준으로 해서

어느 경우일때는 COL2를 내림차순으로 정렬하고,

또 어느 경우일때는 COL2를 오름차순으로 정렬 할 수 있을까요?

by 부쉬맨 [2012.10.05 13:07:59]
ORDER BY 1 DESC, 2 asc

by 아발란체 [2012.10.05 13:17:51]

ORDER BY 1, 2 >> COL1 오름, COL2 오름
ORDER BY 1 DESC, 2 >> COL1 내림, COL2 오름
ORDER BY 1, 2 DESC >> COL1 오름, COL2 내림
ORDER BY 1 DESC, 2 DESC >> COL1 내림, COL2 내림

즉 부분적으로 변수화 하여 어쩔 경우에 따라 DESC를 넣고 빼고(또는 ASC, DESC) 하면 됩니다.
혹 ORDER BY절에 "CASE WHEN(VAL == 1) THEN ASC ELSE DESC END"를 원하신게 아니라면용.


by 손님 [2013.04.18 13:22:44]

by 마농 [2012.10.05 14:37:55]
1
2
3
4
5
6
7
8
9
SELECT col1, col2
  FROM tab1
 UNION ALL
SELECT col1, col2
  FROM TAB2
 ORDER BY col1 DESC
     , CASE WHEN (조건식) THEN col2 END DESC
     , CASE WHEN (조건식) THEN null ELSE col2 END ASC
;

by 손님 [2012.10.07 10:07:27]
ORDER BY DECODE(COL1, 'A', 1, 'B', 2), DECODE(COL2, 'C', 1, 'D', 2) DESC 
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입