휘리리뿅
1k
2016-05-13 09:14:22
5
2458

오라클 order by 질문입니다.


 order by 시에 특정 문장은 뒤로 오게 못하나요?


현재


데이터는 가, 기타, 나, 다, 라 가 들어있고 정렬 시


가, 나, 다, 라, 기타 이런식으로 하고 싶은데


정렬하면 가, 기타 부터 나오네요 ㅠㅠ

0
  • 답변 5

  • fx
    1k
    2016-05-13 09:18:29

    DECODE 나 CASE 문을 사용하여 우선 정렬하시면 되요.


  • 블라블라
    463
    2016-05-13 09:47:17

    CASE 문 사용하면 임의순서대로 소팅을 할수 있습니다.


    WITH T AS (

    SELECT '다' ETC FROM DUAL UNION ALL

    SELECT '가' ETC FROM DUAL UNION ALL

    SELECT '기타' ETC FROM DUAL UNION ALL

    SELECT '나' ETC FROM DUAL UNION ALL

    SELECT '라' ETC FROM DUAL

    )

    SELECT *

      FROM T

     ORDER BY CASE

     WHEN ETC = '가' THEN 1

     WHEN ETC = '나' THEN 2

     WHEN ETC = '다' THEN 3

     WHEN ETC = '라' THEN 4

     WHEN ETC = '기타' THEN 5 END

  • 휘리리뿅
    1k
    2016-05-13 10:02:09

    임의 소팅을 할 수 있는데


    이 테이블에 데이터는 계속 가나다라마바사아자카차 로 들어오고 기타는 딱 한개 있습니다.


    계속 증가 될꺼구요 그럴때마다 임의 소팅은 무의미한것 같고


    무조건 정렬시 '기타'라는 단어는 맨 마지막에 나오게 해야할 것같은데...

  • fx
    1k
    2016-05-13 10:13:44

    기타 여부로 우선 정렬 한 후 데이터로 다시 정렬하면 됩니다.


    SELECT * FROM T

    ORDER BY CASE ETC WHEN '기타' THEN 1 ELSE 0 END, ETC


  • 김신입
    2k
    2016-05-13 10:44:40

    우선순위 필드를 추가하시는것도 하나의 방법일 수 있을 것 같아요.. 가령


    이름   |  우선순위

     가     |     1

     나     |     1

     다     |     1

     라     |     1

     마     |     1

    기타  |     2

    기타2   |   2

    해당없음  |   2



    SELECT * FROM TABLE_NAME ORDER BY 우선순위, 이름;

  • 로그인을 하시면 답변을 등록할 수 있습니다.