728x90
반응형
쿼리문의 조회된 결과 중 어떠한 칼럼에 원하는 데이터가 있을 경우 그 그 데이터들만 특정한 칼럼을 기준으로 다시 오름 차순 정렬을 해야 하는 작업이 생겼습니다.
사용하는 언어의 컴포넌트나 지원 요소에 따라 간단히 해결될 수도 있고 다른 방식으로도 해결이 가능하겠지만 이번에는 ORDER BY 절에 CASE 문을 사용해보기로 했습니다.
초보라 설명은 잘 못하지만 가끔은 쓰일 듯 하여 글로 남겨봅니다.
* 예제 데이터

위와 같이 'members' 테이블에 데이터가 입력되어 있고 'grade' 칼럼으로 오름차순 정렬되어 있습니다. 예를 들기 위해 단순히 입력했습니다.
우선, 여기서 현재 조회된 정렬 상태를 유지하되 'grade' 컬럼의칼럼의 데이터 중 '65'인 항목들만 'note' 칼럼의 데이터를 오름차순으로 정렬하고자 합니다.
* 코드
SELECT *
FROM members
ORDER BY grade ASC, (CASE WHEN grade = 65 THEN note END) ASC, empno ASC
* 결과

결과 이미지와 같이 'grade' 컬럼의 데이터 중 '65'인 항목들만 'note' 칼럼의 데이터를 오름차순으로 정렬하였습니다.
이를 이용하여 'grade' 칼럼의 데이터 중 '65'와 '80'인 항목들만 'note' 칼럼의 데이터를 정렬해보겠습니다.
* 코드
SELECT *
FROM members
ORDER BY grade ASC, (CASE WHEN grade = 65 THEN note
WHEN grade = 80 THEN note END) ASC, empno ASC
--또는
SELECT *
FROM members
ORDER BY grade ASC, (CASE WHEN grade = 65 THEN note END) ASC, (CASE WHEN grade = 80 THEN note END) ASC, empno ASC
--또는
SELECT *
FROM members
ORDER BY grade ASC, (CASE WHEN grade IN (65, 80) THEN note END) ASC, empno ASC
* 결과

내림차순으로 해도 되고 기타 등등 다양하게 응용 가능합니다.
※ 잘못된 부분이나 틀린 내용이 있다면 지적해주세요.
728x90
반응형
'컴퓨터 > MSSQL' 카테고리의 다른 글
MSSQL WITH 구문 사용 방법 (단일(?), 다중(?) 변수) (0) | 2021.03.24 |
---|---|
MSSQL 선입 선출 적용 방법(feat. WITH 구문) (0) | 2021.03.24 |
MSSQL 버전 확인 (쿼리문, 간단) (0) | 2021.02.24 |
MSSQL 날짜 형식 (Date Format) (0) | 2021.02.24 |
MSSQL 연결된 서버 사용하기 (Linked Server) (0) | 2021.01.28 |