소트 관련 질문 0 3 1,481

by 전욱 [Oracle 기초] 정렬 소트 [2014.08.19 23:00:28]


안녕하세요.

검색해도 원하는 결과를 정확히 찾지 못하고 있어서 질문글 남깁니다.


----------------------------------------
이름  /  구분코드  /  시리얼번호

A  /  3  /  1001
B  /  3  /  1002
C  /  1  /  1003 
D  /  2  /  1004
E  /  4  /  1005
F  /  5  /  1006
G  /  1  /  1007
----------------------------------------

정렬순서를 정하는 문제인데요.
우선되는 정렬순서는
1. <구분코드>가 3 > 2 > 1 > 5 > 4 의 순서대로 정렬한다.
2. <구분코드>가 같을 경우에는 <시리얼번호>가 큰 순서대로 정렬된다.

위 표로 예로 들면
B  /  3  /  1002
A  /  3  /  1001 
D  /  2  /  1004
G  /  1  /  1007
C  /  1  /  1003
F  /  5  /  1006
E  /  4  /  1005

이렇게 결과가 나오게됩니다.

<구분코드>가 큰 순서대로 정렬하는 경우라면  간단하게 해결될 것 같은데
그게아니라서 헤매고 있습니다 ;;

도움 부탁드리겠습니다(--)(__)

좋은하루되세요^^

by 비주류 [2014.08.20 00:31:09]

order by mod(구분코드+1, 5) desc, 시리얼번호 desc

order by instr('32154', 구분코드), 시리얼번호 desc


by 우리집아찌 [2014.08.20 09:41:02]
-- 그냥 보기 편하게

SELECT * FROM
(SELECT 'A' NM ,3 CD,1001 SEQ FROM DUAL UNION ALL
SELECT 'B' ,3 ,1002 FROM DUAL UNION ALL
SELECT 'C' ,1 ,1003 FROM DUAL UNION ALL
SELECT 'D' ,2 ,1004 FROM DUAL UNION ALL
SELECT 'E' ,4 ,1005 FROM DUAL UNION ALL
SELECT 'F' ,5 ,1006 FROM DUAL UNION ALL
SELECT 'G' ,1 ,1007 FROM DUAL )
order by DECODE(CD,3,1,2,2,1,3,5,4,4,5) ASC

 


by 손님 [2014.08.20 23:00:11]
답변 감사합니다^^
즐거운 하루되세요~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입