DataBase/SQL

[SQL] ORDER BY에 조건을 주려면?

mingmongs 2025. 3. 13. 15:06

title

데이터 조회 결과값을 리스트로 화면에 보여주도록 개발을 하던 와중에
쿼리문의 결과 행들 중 특정 행만 최하단에 오게 하도록 처리하고 싶었다.
쿼리 결과값 중 특정 값을 맨 아래에 오게 하기 위해 ORDER BY에 조건을 주는 방법을 찾아보았다.

 

CASE WHEN 1 OR 0 조건을 통해 우선순위를 줄 수 있다.

예시
 ▶ A=’1000’인 데이터를 가장 뒤에 나오도록 처리함

WITH DATA_TABLE AS (
    SELECT '1000' AS A FROM DUAL
    UNION ALL
    SELECT '2000' AS A FROM DUAL
    UNION ALL
    SELECT '3000' AS A FROM DUAL
)
SELECT *
FROM DATA_TABLE
ORDER BY (CASE WHEN A = '1000' THEN 1 ELSE 0 END);

 

결과

result1

 

 

예시활용

 

 위 예시에 추가적으로 나머지 행들에 대해서는 오름차순으로 정렬하도록 조건을 추가해보자

 ▶  A=’1000’인 데이터를 가장 뒤에 나오도록 처리함

 ▶ 나머지 행들은 오름차순으로 정렬

WITH DATA_TABLE AS (
    SELECT '1000' AS A FROM DUAL
    UNION ALL
    SELECT '2000' AS A FROM DUAL
    UNION ALL
    SELECT '3000' AS A FROM DUAL
    UNION ALL
    SELECT '4000' AS A FROM DUAL
    UNION ALL
    SELECT '5000' AS A FROM DUAL
)
SELECT *
FROM DATA_TABLE
ORDER BY (CASE WHEN A = '1000' THEN 1 ELSE 0 END), A;

 

결과

result2