게시판 순번을 역순으로 하는 질문 0 7 1,379

by 겸둥이k [Oracle 기초] [2020.01.23 10:05:27]


JSP 딴에서 역순으로 순번을 짜서

10 9 8 7 로 순번으로갑니다. 이런식으로 jsp 에서 역순으로 하다보니 엑셀다운로드할때  문제가되는데 엑셀셀렉트문을 쓰다보니 JSP와 순번이 같지 않게되버립니다(역순으로 가지않고 순서대로 가버림).

 rownum 역순 쿼리를 짜야되서 짜봣는데 되긴 되는데 남들하고 달라서요 혹시 써도되는걸까요 ? 되는데 왜 되는지 이해를 못해서

아래 쿼리문 보시면 전체 카운트수를 가져온다음에 그걸 로우수대로 빼고 그다음 +1을 해줬는데 .....

SELECT ROW_NUMBER() OVER (ORDER BY 정렬할컬럼 DESC) AS ROWNUM 이거와 같은 뜻인지

좋은 답변 부탁드립니다.

SELECT
     SEQ_NO - RNUM + 1       AS seqNo
      FROM(    
              SELECT ROWNUM RNUM, PA*
                       FROM ( SELECT
                                                IDX idx,
                                                COUNT(1) OVER() SEQ_NO
                                     FROM TEST A
                                    ORDER  BY idx DESC
                 )PA
                     )PB
    

 

by 우리집아찌 [2020.01.23 10:34:37]
select idx
       , row_number() over( order by idx ) rn
  from test
 order by rn desc

 


by 겸둥이k [2020.01.23 14:02:19]

답변감사합니다.

짜주신 쿼리는 이미 실행본상태 이구요

궁금한게 제가 위에 짠 쿼리를 사용해도되는지가 궁금합니다.( SEQ_NO - RNUM + 1       AS seqNo)  이걸요

 

그리고 다른방법은 그냥 단순히  아래있는 쿼리문을 써도 되더라구요  idx는 asc 순 한번더 감싼 rownum 은 desc 로 그럼 역순으로 되더라구요

SELECT
     SEQ_NO - RNUM + 1       AS seqNo,
     RNUM rnum,
    IDX idx
      FROM(    
              SELECT ROWNUM RNUM, PA*
                       FROM ( SELECT
                                                IDX idx,
                                                COUNT(1) OVER() SEQ_NO
                                     FROM TEST A
                                    ORDER  BY idx ASC
                 )PA
                 ORDER BY ROWNUM DESC
                     )PB

 


by 우리집아찌 [2020.01.23 14:13:33]

count over 함수를 더 써야하는데 쓰실 이유가 있나요?


by 겸둥이k [2020.01.23 14:44:43]

쓸이유는 없습니다. 단순히 궁금해서 입니다.

올려주신 쿼리는 제가 원하는 값이 안뜨더라구요

 

첫번째 제가 올린쿼리는 count 함수를 써서 한거고

두번쨰쿼리는 단순히 order by를 한번더 감싸서 한거구요 여기서 카운트쓴건 복붙하다가 ㅠ 한거라서  두번째 쿼리 문에서 카운트는 생각안하셔도 될거같습니다. 헷갈리게 해서 죄송합니다.

 

두개의 차이가 있을까요 ?


by 우리집아찌 [2020.01.23 14:57:50]

원하시는 결과를 올려주세요


by 겸둥이k [2020.01.23 15:23:17]

idx (pk값)  rnum (ROWNUM)                  ->   원하는값   idx            rnum

            10           1                                                            10             10

             9              2                                                            9               9

             8              3                                                            8              8

             7               4                                                           7             7

             6              5                                                             6              6

5              4

 

 

결과값을 화면으로 못보여준다는점 죄송합니다. ㅠ


by 우리집아찌 [2020.01.23 15:28:22]

select idx

        , row_number() over(order by idx ) rn

  from test

order by rn desc

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입