문제를 풀다가 한번 올려봐요 ,,,ㅜㅜ
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;
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)