SQL 정렬 질문입니다.
2013.03.27 17:43
질문하시기 전에 게시판 검색을 먼저 해주세요.
타블릿PC, 스마트폰에 관한 질문 또는 요청은 <포터블기기 질문답변> 게시판을 이용해주세요.
=============================================================================================
안녕하세요.
mySQL 에서 사용자정렬을 하려고 합니다.
order by
case
when a.teamid = 'AC00' then 1
when a.teamid = 'B000' then 2
when a.teamid = 'Y000' then 3
else 30
end
이런 식으로 해서 팀별로 정렬하는 것은 성공했는데
팀 내에서 부장-차장-사원 순으로 정렬을 한번 더 해줘야 합니다.
order by
case
when a.teamid = 'AC00' then 1
when a.teamid = 'B000' then 2
when a.teamid = 'Y000' then 3
when a.jikgub = '부장' then 4
when a.jikgub = '차장' then 5
when a.jikgub = '사원' then 6
else 30
end
위와 같은 식으로 해도 정렬이 제대로 안되네요.
어떻게 해야 팀별 정렬 후 팀 내에서 직급별 정렬까지 할 수 있을까요?
코멘트 9
-
인포넷
03.27 18:09
그렇게 하면 직급 정렬이 Freedom님이 원하시는 부장-차장-사원 순으로 안되지 않나요???
-
Freedom^^
03.27 18:09
ㅎㅎㅎ 팀 이름의 순서가 정해져 있어서요. 이름순 정렬은 안되서
인사팀, 회계팀, 총무팀 - 이런식으로 됩니다. 그래서 case 를 쓸 수 밖에 없는 상황이기는 한데 직급 정렬이 안되네요.
-
인포넷
03.27 18:15
이건 정확히 말하면 정렬이라고 하기 그렇네요...
먼저 팀별끼리 모으고 다음에 직급별로 모으는 것이니...
-
Freedom^^
03.27 18:16
사용자 임의정렬이지요. 엑셀에는 그 기능이 있는데 SQL 에서 어떻게 구현할지 몰라서 문제입니다. ^^;
-
인포넷
03.27 18:30
중복 where 절로 조건을 만들어야 할 것 같은데요...
팀별 where 절과 직급별 where 절로요...
-
김강욱
03.27 20:03
order by
case
when a.teamid = 'AC00' then 1
when a.teamid = 'B000' then 2
when a.teamid = 'Y000' then 3
end,
case
when a.jikgub = '부장' then 4
when a.jikgub = '차장' then 5
when a.jikgub = '사원' then 6
else 30
end
이거요?
-
sjlee
03.28 00:31
select teamname, jikgubname
from (
select
case
when a.teamid = 'AC00' then 1
when a.teamid = 'B000' then 2
when a.teamid = 'Y000' then 3
else 30 end AS teamid,a.teamname,case
when a.jikgub = '부장' then 1
when a.jikgub = '차장' then 2
when a.jikgub = '사원' then 3
else 30 end AS jikgubid,a.jikgub AS jikgubnamefrom a
)
order by teamid, jikgubid이렇게 하면 안되는건가요? -
Freedom^^
03.28 08:39
감사합니다, 김강욱님의 예제보고 order by만으로 응용해서 해결했습니다.
모두들 답변 달아주셔서 정말 감사합니다. 큰 도움이 되었습니다. ^^
order by 부서,
직급
이렇게 하셔야죠