데이터 조회 결과값을 리스트로 화면에 보여주도록 개발을 하던 와중에
쿼리문의 결과 행들 중 특정 행만 최하단에 오게 하도록 처리하고 싶었다.
쿼리 결과값 중 특정 값을 맨 아래에 오게 하기 위해 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);
결과
예시활용
위 예시에 추가적으로 나머지 행들에 대해서는 오름차순으로 정렬하도록 조건을 추가해보자
▶ 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;
결과
'DataBase > SQL' 카테고리의 다른 글
[SQL] NULL 관련 SQL 함수(NVL, COALESCE, NULLIF) (0) | 2025.04.21 |
---|---|
[SQL] 쿼리 결과가 없는 경우 0으로 반환하려면? (0) | 2025.03.14 |