order by case 출력순서 지정 0 3 1,323

by 냠냠 [SQL Query] [2014.11.05 13:12:34]


문제를 풀다가 한번 올려봐요 ,,,ㅜㅜ

order by case로 먼저, 마지막 출력 순서를 지정하긴 했는데,

나머지를 오름차순 정렬하는 게 안되네요, else asc로 해도 안되고,,,

부탁드립니다. 

 

EMP 테이블에서 직원의 정보를 사번(EMPNO) 오름차순으로 정렬하되 EMPNO가 7839인 경우 가장 먼저, 1588인 경우 가장 뒤에 출력되도록 하시오.

==============================================================================

SELECT *
FROM EMP
ORDER BY (CASE EMPNO
           WHEN 7839 THEN 1
           WHEN 1588 THEN (SELECT COUNT(*) FROM EMP)
           ELSE 2
           END )
AND EMPNO ASC;

===============================================================================

SELECT *
FROM EMP
ORDER BY DECODE(EMPNO,7839,1)
         , DECODE(EMPNO,1588,(SELECT COUNT(*) FROM EMP)), EMPNO ASC;

by 우리집아찌 [2014.11.05 13:25:58]
1
2
3
SELECT *
 FROM EMP
 ORDER BY DECODE(EMPNO ,7839 ,1,1588,3,2)  ASC , EMPNO  ASC;

 


by 마농 [2014.11.05 13:31:03]

1번 쿼리는
- AND 부분만 컴마(,)로 바꾸시면 결과는 나올거구요.
- 서브쿼리로 Count 한 부분은 그냥 상수값 3 정도로 바꾸시면 간단하겠지요.
- ORDER BY CASE empno WHEN 7839 THEN 1 WHEN 1588 THEN 3 ELSE 2 END, empno


2번 쿼리는
- Decode 를 여러개 쓰는게 아니라 하나만 써야죠.
- ORDER BY DECODE(empno, 7839, 1, 1588, 3, 2), empno
- ORDER BY DECODE(empno, 7839, 1, 1588, 99999, empno)


by 냠냠 [2014.11.05 14:47:58]

아 ㅜㅜ정말  감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입