일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- myBatis
- Source
- 오픈소스
- Spring Boot
- error
- Python
- Open Source
- 설정
- JavaScript
- Exception
- git
- Thymeleaf
- ubuntu
- spring
- MySQL
- IntelliJ
- Tomcat
- MSSQL
- Eclipse
- PostgreSQL
- Docker
- Core Java
- AJAX
- 문서
- STS
- jpa
- maven
- JDBC
- SpringBoot
- oracle
- Today
- Total
헤르메스 LIFE
[Oracle] LAG, LEAD - 이전, 이후 비교함수, 합계 본문
출처 : http://wintness.tistory.com/76
WITH TESTTABLE AS
(
SELECT 0 CAT FROM DUAL UNION ALL
SELECT 1 CAT FROM DUAL UNION ALL
SELECT 3 CAT FROM DUAL UNION ALL
SELECT 6 CAT FROM DUAL UNION ALL
SELECT 10 CAT FROM DUAL
)
SELECT CAT,
NVL(LAG(CAT, 1) OVER (ORDER BY CAT), 0) PREV_VALUE,
NVL(LEAD(CAT, 1) OVER (ORDER BY CAT), 0) NEXT_VALUE,
CAT - LAG(CAT, 1) OVER (ORDER BY CAT) GAP_BY_PREV_VALUE,
CAT - LEAD(CAT, 1) OVER (ORDER BY CAT) GAP_BY_NEXT_VALUE,
SUM(CAT) OVER (ORDER BY CAT) NEXT_SUB_SUM
FROM TESTTABLE
;
=> Prev_value 와 Next_value 에서 Null값(빈칸)으로 표시된 부분들은 대상로우의 이전값 혹은 다음값이 없는 경우에 해당한다.
기본적으로는 다음과 같다.
LEAD() - 다음값
LAG() - 이전값
* 사용법
- LAG(), LEAD() 함수 사용시 필수 입력사항 : OVER(ORDER BY )
- LAG(A, B, C) A:대상로우, B:가져와서 뿌져줄 시작로우(대상로우 이전값 출력됨, default:1), C:대상로우 이전값이 없는 경우 채울 값(default:Null)
- LEAD(A, B, C) A:대상로우, B:가져와서 뿌져줄 시작로우(대상로우 다음값 출력됨, default:1), C:대상로우 다음값이 없는 경우 채울 값(default:Null)
'Database' 카테고리의 다른 글
[Oracle] TRUNC, ROUND 차이 (0) | 2015.10.02 |
---|---|
[Oracle] PL/SQL 예제 (0) | 2015.10.02 |
[Oracle] PL/SQL PREDEFINED EXCEPTION - 미리정의된 예약 (0) | 2015.09.30 |
[Oracle] PL/SQL 예외처리 (0) | 2015.09.30 |
[Oracle] Procedure 예제 (0) | 2015.09.30 |