반응형

오늘은 안쓰고 자려다가 오늘 쿼리를 수정하며 이건 꼭 정리해 놓아야지 했던 것이 생각나서 끄적여본다.

 

이미 기존 데이터에 구분값이 사장(A001), 임원(A002), 팀장(A003), 사원(A004)의 코드 값으로 구분되어 들어가 있었다고 가정하였을때, 갑자기 사장과 임원 사이에 부사장이라는 직급이 생겼다고 가정하자.

기존에 ORDER BY를 하여 사장 > 임원 > 팀장 > 사원 순으로 조회되던 데이터를

                                           사장 > 부사장 > 임원 > 팀장 > 사원 순으로 조회되어야 한다고 한다.

 

이런경우 임원(A002), 팀장(A003), 사원(A004)의 코드 값을 하나씩 늘려 임원(A003), 팀장(A004), 사원(A005) 로 업데이트 하고, 부사장의 코드를 A002로 다시 정리하여 조회하는 방법도 있겠지만, 

이미 공통으로 사용되고 있던 코드이기 때문에, 코드의 값을 바꾸는 것이 내키지 않는 경우가 있다. 

 

그런경우!

부사장에 'A005'코드를 부여하고 조회할때 

ORDER BY 절 안에서 CASE문을 사용해 정렬해주면 깔끔하게 해결된다.

 

SELECT 직급, 이름
FROM 회사사람들
ORDER BY 직급

 

👇

 

SELECT 직급, 이름
FROM 회사사람들
ORDER BY (CASE 직급 WHEN 'A001' THEN 1
                   WHEN 'A002' THEN 3
                   WHEN 'A003' THEN 4
                   WHEN 'A004' THEN 5
                   WHEN 'A005' THEN 2
          END
          )ASC

 

 

끝!

 

 

 

 

반응형

+ Recent posts