by 구루유니 [2024.02.02 15:24:57]
WITH TEMP AS (
SELECT 20240202 AS DTTM,
'PK1' AS MNGNO,
'7777' AS OCD,
'I' AS DIV_CD
FROM DUAL
UNION ALL
SELECT 20240202 AS DTTM,
'PK1' AS MNGNO,
'7777' AS OCD,
'O' AS DIV_CD
FROM DUAL )
SELECT DTTM,
MNGNO,
OCD,
DIV_CD,
RK
FROM(
SELECT DTTM,
MNGNO,
OCD,
DIV_CD,
ROW_NUMBER() OVER(PARTITION BY OCD,MNGNO ORDER BY DTTM) AS RK
FROM TEMP
)
이렇게 할시
RK가 1인 DIV_CD 는 O,
2인 DIV_CD는 I로 출력되는데
조건으로 WHERE RK = 1 로 조회하면 DIV_CD 는 I 로 출력이 됩니다.
해당 부분은 어떤 이유때문에 이렇게 출력되는지 궁금합니다. 답변 주시면 감사드리겠습니다
인라인뷰에 분석함수값을 필터로 걸면 소트가 다른 소트로 먹여지네요. 실행 계획 돌려보다가 확인했습니다. 감사합니다
정렬기준이 유니크하지 않기 때문에 1등이 누가 될지 장담할 수 없습니다.
항상 일정한 반환값을 원한다면 정렬기준이 유일해야 합니다.