SELECT 전체 갯수에 대해 질문 드리겠습니다.

by 훈입니다. posted Apr 17, 2020

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS 
Ubuntu Linux 64bit 
CUBRID Ver.
CUBRID-10.2.0.8797-d56a158-Linux.x86_64
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요

현재 오라클에서 큐브리드로 마이그레이션을 하고


게시판 페이징을 구현하려고 하는데

MAX(ROWNUM) OVER ( ORDER BY ROWNUM DESC ) AS countAll   <--전체 데이터 카운터수

이렇게 쓰면 에러는 안나는데 countAll   이 null값으로 나옵니다.

오라클에선 잘 나오는데....


다른쿼리를 써야 할까요?

아니면 count 쿼리를 한번 더 날려서 구현을 해야 하나요?



아래는 쿼리문입니다.


 SELECT 

       F.BOARDID

     , F.TITLE

     , F.BOARD_REF

     , F.RE_STEP

     , F.RE_LEVEL

     , F.READNUM

     , F.ATCHMNFL_NO

     , F.NOTICEFLAG

     , F.STARTDATE

     , F.ENDDATE

     , F.REGDATE

     , F.MGS_USERID 

     , F.countAll


FROM 

(

    SELECT 

           E.BOARDID

         , E.TITLE

         , E.BOARD_REF

         , E.RE_STEP

         , E.RE_LEVEL

         , E.READNUM

         , E.ATCHMNFL_NO

         , E.NOTICEFLAG

         , E.STARTDATE

         , E.ENDDATE

         , TO_CHAR(E.REGDATE,'YYYY-MM-DD HH:MI:SS') AS REGDATE

         , E.MGS_USERID   

         , ROW_NUMBER() OVER (ORDER BY  E.NOTICEFLAG DESC,E.BOARDID DESC) AS RNUM

         , MAX(ROWNUM) OVER ( ORDER BY ROWNUM DESC ) AS countAll        <-- 이부분입니다.

    

    FROM 

    (

        SELECT A.BOARDID

             , A.TITLE

             , A.BOARD_REF

             , A.RE_STEP

             , A.RE_LEVEL

             , A.READNUM

             , A.ATCHMNFL_NO

             , A.NOTICEFLAG

             , A.STARTDATE

             , A.ENDDATE

             , A.REGDATE

             , A.MGS_USERID        

        FROM BOARD_NOTICE A 

        WHERE A.NOTICEFLAG = 'Y' 

        AND (TO_CHAR(SYSDATETIME,'YYYYMMDD') BETWEEN A.STARTDATE AND A.ENDDATE) 

        UNION ALL

           

    ) E

    WHERE 1 = 1

)F

ORDER BY  F.NOTICEFLAG DESC,F.BOARDID DESC

     FOR ORDERBY_NUM() BETWEEN 1 + 1 AND 10


답변좀 부탁드립니다.