• ROWNUM 함수는 ORDER BY 함수를 같이 사용하면 순번이 뒤죽박죽 된다.
 💡 why ? 순번을 매긴 후에 order by 정렬을 하기 때문에

이 문제를 해결하기 위한 방법

  1. 서브쿼리에서 먼저 정렬 후 순번 매기기
SELECT 
ROWNUM,--순번매기기
A.PRODUCT_NAME,
A.STANDARD_COST
FROM
(
    SELECT 
    * 
    FROM 
    PRODUCTS 
    ORDER BY STANDARD_COST --서브쿼리내에서 정렬
)A

2. ROW_NUMBER() 함수 사용

SELECT
ROW_NUMBER() OVER (ORDER BY A.STANDARD_COST) AS NUM, --그룹별 순번
A.PRODUCT_NAME,
A.STANDARD_COST
FROM
PRODUCTS A
💡 ROW_NUMBER은 파티션으로 분할 된 그룹별로 각 로우에 대한 순번을 반환하는 함수

 

'DB' 카테고리의 다른 글

[Oracle] DECODE 함수  (0) 2022.12.05
[Oracle]콤마로 분리된 문자열 여러 행으로 변환하기  (0) 2022.11.15
컬럼명으로 테이블 찾기  (0) 2022.10.24
FETCH / OFFSET  (0) 2022.10.24
COALESCE  (0) 2022.10.24

+ Recent posts