관리 메뉴

드럼치는 프로그래머

[DBMS] 오라클 LEAD, LAG (다음글, 이전글 가져오기 간단한 쿼리) SQL 본문

★─Programing/☆─DBMS

[DBMS] 오라클 LEAD, LAG (다음글, 이전글 가져오기 간단한 쿼리) SQL

드럼치는한동이 2017. 3. 21. 13:26
   select num, title,
    lead(title,1,'다음글') over (order by num) next_title,
    lag(title,1,'이전글') over (order by num ) pre_title,
    from Tboard

 

요렇게 하면 간단하게 위에 레코드(lead), 아래 레코드(lag)를 참조하여 값을 가져올수가 있다.

주의 할 점은 where num='3' 과 같이 하면 next,title, pre_title 값이 null이 된다.

where 절을 사용 할 시에는 경우에 따라 다음과 같이 해줘야 한다.

 

select * from
(
    select num, title,
    lead(title,1,'다음글') over (order by num) next_title,
    lag(title,1,'이전글') over (order by num ) pre_title,
    from Tboard
)
where best_code='2'

 

다음과 같이 여러개 사용도 가능

select * from
(
    select num, title,

        lead(num,1) over (order by num) next_num,
        lead(title,1,'다음글') over (order by num) next_title,

        lag(num,1) over (order by num ) pre_num,
        lag(title,1,'이전글') over (order by num ) pre_title,
    from Tboard
)
where best_code='2'

 

함수 인수 설명

lead(컬럼명, 현재레코드에서 얼마나 건너띈 레코드인지 수 [,'null일 경우 들어가는 값'])

 

[출처] http://blog.daum.net/mystarlight/8925397

Comments