MSSQL에서 데이터를 조회(SELECT)할 때 ORDER BY절을 활용해 정렬합니다.
ORDER BY절을 활용한 정렬방법 소개하겠습니다.
기본 문법
SELECT * FROM [TABLE] ORDER BY [COLUMN1] ASC(오름차순)
SELECT * FROM [TABLE] ORDER BY [COLUMN1] DESC(내림차순)
/*
COLUMN1의 값들을 기준으로 정렬합니다.
ASC: 오름차순
DESC: 내림차순
ASC/DESC 부분은 생략 할 수 있습니다. 생략시 기본 ASC(오름차순) 입니다.
*/
💡오름차순: 작은 값부터 큰 값으로 이어지는 순서입니다.
💡내림차순: 큰 값부터 작은 값으로 이어지는 순서입니다.
복합칼럼 정렬
한가진 칼럼만을 기준으로 정렬을 하게 되면 해당값이 같은 데이터의 경우는 값의 우위를 가릴 수 없습니다.
그래서 콤마로 구분하여 여러 개의 칼럼을 정렬기준으로 정할 수 있습니다.
SELECT *
FROM [TABLE]
WHERE [COLUMN1] ASC, [COLUMN2] DESC
/*
기본적으로 COLUMN1 기준으로 오름차순 정렬을 합니다.
COLUMN1의 값이 같은데이터들 끼리는 COLUMN2 기준 내림차순으로 정렬 합니다.
*/
위 예시는 2개의 칼람을 기준으로 정렬했지만 필요하다면 3~4개, 그 이상도 가능합니다.
함수 및 연산자를 활용한 정렬
위에 예시에서는 전부 ORDER BY절에 칼럼을 기준으로 하였지만
사실 ORDER BY문은 칼럼을 기준으로 한다기보다는, 데이터를 기준으로 합니다.
따라서 함수 또는 연산자, 조건문(CASE)을 사용해도 됩니다.
함수를 사용하여 ORDER BY
SELECT *
FROM [TABLE]
ORDER BY ISNULL([COLUMN1], 0) DESC
/*
ISNULL함수를 적용한 데이터를 기준으로 내림차순 정렬합니다.
*/
연자를 사용하여 ORDER BY
SELECT *
FROM [TABLE]
WHERE [COLUMN1] + [COLUMN2] DESC
/*
[COLUMN1] 과 [COLUMN2]를 더한 값을 기준으로 내림차순 정렬합니다.
*/
CASE문을 사용하여 ORDER BY
SELECT *
FROM [TABLE]
ORDER BY (CASE WHEN [COLUMN1] BETWEEN 90 AND 100 THEN 1
WHEN [COLUMN1] BETWEEN 80 AND 90 THEN 2
WHEN [COLUMN1] BETWEEN 70 AND 80 THEN 3
ELSE 4
END) DESC
/*
케이스문의 결과를 바탕으로 내림차순 정렬합니다.
*/