select문에서 a_data컬럼 최근날짜 순서로 10개의 정보만 출력되게끔 하고 싶습니다.
조건문에
where ROWNUM <= 10
order by a_date desc 로 하여도
과거데이터로부터 데이터 10개가 출력되네요.
어떻게 해야 하나요?
고수님들의 조언 부탁드립니다~
by 우리집아찌
[2018.06.14 14:29:45]
WITH T AS (
SELECT SYSDATE - 100 + LEVEL AS DT FROM DUAL CONNECT BY LEVEL <= 100
)
-- ROWNUM 이용
SELECT *
FROM ( SELECT DT
FROM T
ORDER BY DT DESC
)
WHERE ROWNUM <= 10
-- ROW_NUMBER() OVER() 이용
SELECT *
FROM ( SELECT DT
, ROW_NUMBER() OVER(ORDER BY DT DESC ) RN
FROM T
)
WHERE RN <= 10
by 마농
[2018.06.14 14:42:19]
Where 가 Order by 보다 우선 수행되기 때문입니다.
Order by 가 우선 수행되도록 인라인뷰로 감싸 주세요.
질문도 틀렸네요? 컬럼수가 아니라 로우수.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.