조회데이터 컬럼 수 제한 0 2 101

by rotic [Oracle 기초] [2018.06.14 14:16:07]


안녕하십니까

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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입