(오라클) 윈도우절에서 FOLLOWING 질문 0 1 775

by jake3371 [Oracle 기초] [2019.09.23 19:23:53]


아래 쿼리는  b_column으로 분할한 후, c_column으로 정렬하고, 이전 row 포함하는 윈도우 절 입니다.

rows 1 preceding하게 되면 윈도윙결과셋에는 현재로우와 이전로우 두 로우가 구성 됩니다.

따라서 현재 로우와 바로 이전 로우 중 높은 값을 리턴합니다.

 

MAX(a_column) OVER(PARTITION BY b_column

                                           ORDER BY c_column

                                            ROWS 1 PRECEDING)

 

그런데 위에 있는 윈도우절에서 PRECEDING대신 FOLLOWING 사용시 에러가 발생합니다.

ROWS 1 FOLLOWING 구문에서 왜 에러가 발생하는 걸까요?

 

ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING 으로 변경하면

의도한 대로(현재로우와 다음로우가 윈도윙결과셋이 됨) 잘 작동 하더군요.

 

PRECEDING은 암묵적으로 현재로우를 포함하고

FOLLOWING은 항상 명시적으로 시작점을 정의해야 하는게 스펙인건가요?

by jkson [2019.09.24 08:26:28]

https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions004.htm

windowing_clause 부분 보세요. 그게 문법입니다.

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